当前位置: 首页 > news >正文

阿里巴巴的关联网站苏州工业园区官网

阿里巴巴的关联网站,苏州工业园区官网,外贸推广信邮件,新颖网站页面设计个人理解为将一幅不规则的图形,通过最轮廓发现,最大轮廓匹配来确定图像的位置,再通过pt将不规则的图像放在规定的矩形里面,在通过透视变换将不规则的图形放进规则的图像中。 1. findHomography 函数 • Mat h findHomography(s…

个人理解为将一幅不规则的图形,通过最轮廓发现,最大轮廓匹配来确定图像的位置,再通过pt将不规则的图像放在规定的矩形里面,在通过透视变换将不规则的图形放进规则的图像中。

1. findHomography 函数

• Mat h = findHomography(srcPts, dstPts, RANSAC);

• 功能:该函数用于计算从源点集 srcPts 到目标点集 dstPts 的单应性矩阵 h。单应性矩阵描述了两个平面之间的投影变换关系。

• 参数:

• srcPts:源图像中的点集,是一个 std::vector<cv::Point2f> 类型的向量,包含至少4个点。这些点在源图像平面上定义了一个区域。

• dstPts:目标图像中的对应点集,同样是 std::vector<cv::Point2f> 类型,与 srcPts 中的点一一对应。它定义了源图像区域要映射到的目标图像区域。

• RANSAC:这是一种稳健的估计方法,称为随机抽样一致算法(Random Sample Consensus)。使用 RANSAC 时,函数会通过多次随机抽样来估计单应性矩阵,并排除可能的误匹配点,从而得到更准确可靠的单应性矩阵。

• 返回值:返回一个 cv::Mat 类型的单应性矩阵 h,它是一个 3x3 的矩阵,用于后续的透视变换。如果无法找到合适的单应性矩阵(例如点集数量不足或匹配质量太差),返回的矩阵将是一个空矩阵。

2. warpPerspective 函数

• warpPerspective(image, dst, h, Size(600, 800));

• 功能:根据给定的单应性矩阵 h 对输入图像 image 进行透视变换,并将结果存储在 dst 中。透视变换可以将图像从一个平面投影到另一个平面,常用于纠正图像的透视畸变、图像拼接等任务。

• 参数:

• image:输入的源图像,是一个 cv::Mat 类型的对象。

• dst:输出的目标图像,也是 cv::Mat 类型。在调用函数前,不需要对其进行初始化,函数会根据变换结果自动分配内存。

• h:前面通过 findHomography 函数计算得到的单应性矩阵,它决定了图像如何进行透视变换。

• Size(600, 800):指定输出图像 dst 的大小,这里宽为600像素,高为800像素。变换后的图像会被调整到这个尺寸。

这两行代码在图像变换处理中是非常关键的步骤,先计算单应性矩阵,再基于此矩阵对图像进行透视变换,从而实现将源图像的特定区域映射到目标图像的指定区域。



#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main(int argc, char** argv) {
    // Mat image = imread("D:/images/butterfly.jpg");
    Mat image = imread("C:/newword/image/31.jpg");
        Mat gray, binary;
    cvtColor(image, gray, COLOR_BGR2GRAY);
    threshold(gray, binary, 0, 255, THRESH_BINARY | THRESH_OTSU);

    vector<vector<Point>> contours;
    vector<Vec4i> hierachy;
    findContours(binary, contours, hierachy, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE);
    int index = -1;
    double max = -1;
    for (int i = 0; i < contours.size(); i++) {
        double area = contourArea(contours[i]);
        if (area > max) {
            max = area;
            index = i;
        }
    }
    drawContours(image, contours, index, Scalar(0, 255, 0), 2, 8);

    Mat approxCurves;
    vector<Point2f> srcPts;
    approxPolyDP(contours[index], approxCurves, 100, true);
    for (int i = 0; i < approxCurves.rows; i++) {
        Vec2i  pt = approxCurves.at<Vec2i>(i, 0);//0代表着索引值,访问坐标
        std::cout << pt << std::endl;
        srcPts.push_back(Point2f(pt[0], pt[1]));
        circle(image, Point(pt[0], pt[1]), 12, Scalar(0, 0, 255), 2, 8, 0);
    }
    vector<Point2f> dstPts;
    dstPts.push_back(Point2f(0, 0));
    dstPts.push_back(Point2f(0, 800));
    dstPts.push_back(Point2f(600, 800));
    dstPts.push_back(Point2f(600, 0));
    imshow("轮廓", image);
    imwrite("C:/newword/result_c1c.png", image);

    Mat h = findHomography(srcPts, dstPts, RANSAC);
    Mat dst;
    warpPerspective(image, dst, h, Size(600, 800));
    imwrite("C:/newword/dst.p1ng", dst);
    waitKey(0);
    return 0;
}

http://www.yayakq.cn/news/176330/

相关文章:

  • 东莞企业网站建设报价wordpress竖文主题
  • 内网搭建wordpress网站改版对网站优化影响最大的问题有哪些
  • 南宁seo网站排名优化WordPress上放广告
  • 网站开发公司的职责建筑设计网课
  • 济南网站搭建公司个人如何开发小程序
  • 北京如何优化网站网站开发后台用什么语言
  • 介绍自己的做的网站网站优化3个关键词和10个关键词的区别
  • 购物网站开发需求无锡新吴区建设局网站
  • .网站建设的目标设计广告图用什么软件
  • 网站建设相关法律规定淘宝关键词挖掘工具
  • 可以做热图的工具网站上海景观设计公司排行
  • 石家庄网站建设德信互联科技有限公司小程序设计流程
  • 南海网站制作公司网站开发怎么收费
  • 怎么利用wordpress管理站点咸宁手机网站建设
  • 什么是seo?百度做的网站能优化吗
  • 印刷 网站源码中国建行个人登录入口
  • 长春做网站费用网站百度不收录了
  • 唐山建设公司网站wordpress 爱情主题
  • 青岛网站推广关键词阿里云虚拟主机免费版
  • 信誉好的企业网站开发制作广告网站的步骤
  • 贵阳网站设计报价素材下载解析接口网站开发
  • 企业网站案例公司重庆是哪个省份
  • 网站制作软件教程申请专利的网站
  • 做sorry动图的网站网站设计的目的和功能
  • 潍坊小企业网站建设岗巴网站建设
  • 创新的网站建站网站制作软件手机
  • 网站上传连接失败的原因快速仿站网站建设
  • seo免费优化网站公司网站备案必须是企业信息么
  • 哈密做网站哪种网站开发简单
  • 网站设计规划报告直播网站模板