首页 > 其他分享 >opencv之图像匹配

opencv之图像匹配

时间:2023-06-03 10:02:00浏览次数:36  
标签:srcImg Mat maxLoc tmplImg opencv resultImg 图像匹配 cv

输入一张原图和一张你从原图上扣下来的矩形图,用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;
}

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

 效果图:

 

抠出来的矩形图:

 

标签:srcImg,Mat,maxLoc,tmplImg,opencv,resultImg,图像匹配,cv
From: https://www.cnblogs.com/qingfeng66/p/17453343.html

相关文章

  • opencv 读取图片 图片数据处理 笔记
    1.python中各类图片读取工具的比较参考Python各类图像库的图片读写方式总结可知,opencv的性能表现最好。opencvyyds相关文章收藏:Python-OpenCV:cv2.imread(),cv2.imshow(),cv2.imwrite()Python各类图像库的图片读写方式总结2.opencv常用函数2.1读取图片cv2.imread(filename,fla......
  • opencv学习笔记04-色彩转换
    opencv简易笔记4--色彩转换1.色彩空间的认识色彩是人的眼睛对于不同频率的光线的不同感受,色彩既是客观存在的(不同频率的光)又是主观感知的,有认识差异。所以人类对于色彩的认识经历了极为漫长的过程,直到近代才逐步完善起来,但人类仍不能说对色彩完全了解并准确表述了,许多概念不是......
  • 树莓派opencv的安装
    树莓派安装opencv的教程层出不穷,但是能用的很少。我这个教程是亲自安装成功的。我之前安装过好几次opencv2.49都失败了,唯独这个opencv3.1成功了。下面开始安装吧1.准备sudoapt-getinstallbuild-essentialgitcmakepkg-configsudoapt-getinstallcmakegitlibgtk2.0-......
  • OpenCV 和 TensorRT 之间的数据转换 HWC to CHW
    TensorRT做图像相关模型部署的时候,导入图片的数据存储往往是BHWC(Batch,Height,Width,Channel),而TensorRT推理的时候是BCHW.OpenCV和TensorRT之间的数据转换(BHWCtoBCHW),一般是所有元素遍历赋值:cv::Matorigin_image=cv::imread("test.jpg",1);if(!orig......
  • opencv 无法使用 dll 动态链接库 UnsatisfiedLinkError java.library.path Can‘t fin
    System.loadLibrary(Core.NATIVE_LIBRARY_NAME)使用如上方法加载本地dll文件。 一般会出现两种错误:1、UnsatisfiedLinkErrorjava.library.path  2、UnsatisfiedLinkError Can'tfinddependentlibraries 第一种错误为没有加载到指定的dll文件,该配置可以百度搜索java.li......
  • 基于pycharm环境下opencv的搭建
    国际智能自主机器人大赛环境搭建python环境,IDE为pycharm,配置第三方库opencv。按下cmd+r,输入以下安装命令:pipinstallopencv-python--user-ihttps://pypi.tuna.tsinghua.edu.cn/simplepipinstallopencv-contrib-python--user-ihttps://pypi.tuna.tsinghua.edu.cn/simp......
  • Python_pip install opencv-python太慢的问题
    https://blog.csdn.net/morecccc/article/details/126716080参照如上地址 python安装cv2模块解决安装慢的问题我在这个路径下面C:\Users\renyc\AppData\Roaming新建了pip文件夹  再次新建pip.ini配置文件 内容如下:[global]timeout=6000index-url=https://p......
  • 【模型部署 01】C++实现分类模型(以GoogLeNet为例)在OpenCV DNN、ONNXRuntime、TensorRT
    深度学习领域常用的基于CPU/GPU的推理方式有OpenCVDNN、ONNXRuntime、TensorRT以及OpenVINO。这几种方式的推理过程可以统一用下图来概述。整体可分为模型初始化部分和推理部分,后者包括步骤2-5。以GoogLeNet模型为例,测得几种推理方式在推理部分的耗时如下:结论:GPU加速首选Tens......
  • 使用 OpenCV 进行轮廓检测 (Python/C++)第一部分
    什么是轮廓当我们连接一个对象边界上的所有点时,我们得到一个轮廓。通常,特定轮廓是指具有相同颜色和强度的边界像素。OpenCV使得在图像中查找和绘制轮廓变得非常容易。它提供了两个简单的功能:findContours()drawContours()此外,它有两种不同的轮廓检测算法:CHAIN_APPROX_SIMPLECHAIN_......
  • opencv 分水岭分割图像
     importcv2importnumpyasnp#加载图像img=cv2.imread('image.jpg',0)#对图像进行分水岭算法的梯度变换gx=cv2.Sobel(img,cv2.CV_32F,1,0,ksize=3)gy=cv2.Sobel(img,cv2.CV_32F,0,1,ksize=3)mag,angle=cv2.cartToPolar(gx,g......