opencv之图像匹配

输入一张原图和一张你从原图上扣下来的矩形图,用opencv寻找到这个区域。代码如下:

复制代码
#include <opencv2/opencv.hpp>
#include <iostream>

int main()
{
    // 读取源图像和模板
    cv::Mat srcImg = cv::imread("targe_graph.jpg");
    cv::Mat tmplImg = cv::imread("template.jpg");

    // 创建结果图像矩阵
    cv::Mat resultImg;
    int resultCols = srcImg.cols - tmplImg.cols + 1;
    int resultRows = srcImg.rows - tmplImg.rows + 1;
    resultImg.create(resultRows, resultCols, CV_32FC1);

    // 进行模板匹配
    cv::matchTemplate(srcImg, tmplImg, resultImg, cv::TM_CCOEFF_NORMED);

    // 找到最佳匹配位置
    double minVal, maxVal;
    cv::Point minLoc, maxLoc;
    cv::minMaxLoc(resultImg, &minVal, &maxVal, &minLoc, &maxLoc, cv::Mat());

    // 在源图像上标记匹配位置
    cv::Point rectStart = maxLoc;
    cv::Point rectEnd(maxLoc.x + tmplImg.cols, maxLoc.y + tmplImg.rows);
    cv::rectangle(srcImg, rectStart, rectEnd, cv::Scalar(0, 0, 255), 2);

    // 显示矩形框的左上角坐标
    std::cout << "匹配的矩形框的左上角坐标 (" << rectStart.x << ", " << rectStart.y << ")" << std::endl;

    // 显示源图像并等待用户按下任意键退出程序
    cv::imshow("效果图", srcImg);
    cv::waitKey();

    return 0;
}
复制代码

在控制台显示匹配出的矩形图左上角坐标:

 效果图:

 

抠出来的矩形图:

 

posted @   天天掉头发  阅读(120)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
返回顶端
点击右上角即可分享
微信分享提示