opencv实现边缘模板匹配

在OpenCV中使用C++进行模板匹配时,如果你想利用边缘特征来提高匹配的鲁棒性,可以结合边缘检测算法(如Canny)来提取图像和模板的边缘信息,然后在这些边缘图像上进行模板匹配

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

using namespace cv;
using namespace std;

int main() {
    // 加载图像和模板
    Mat img = imread("image.jpg", IMREAD_GRAYSCALE);
    Mat templ = imread("template.jpg", IMREAD_GRAYSCALE);

    if (img.empty() || templ.empty()) {
        cout << "Could not open or find the image or template!" << endl;
        return -1;
    }

    // 使用Canny边缘检测提取图像和模板的边缘
    Mat edges_img, edges_templ;
    Canny(img, edges_img, 50, 150);
    Canny(templ, edges_templ, 50, 150);

    // 创建结果矩阵
    Mat result;
    int result_cols = img.cols - templ.cols + 1;
    int result_rows = img.rows - templ.rows + 1;
    result.create(result_rows, result_cols, CV_32FC1);

    // 进行模板匹配
    matchTemplate(edges_img, edges_templ, result, TM_CCOEFF_NORMED);

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

    // 在原始图像上绘制矩形框标记匹配区域
    Mat img_display;
    cvtColor(img, img_display, COLOR_GRAY2BGR);
    rectangle(img_display, maxLoc, Point(maxLoc.x + templ.cols, maxLoc.y + templ.rows), Scalar(0, 255, 0), 2);

    // 显示结果
    imshow("Source Image", img_display);
    imshow("Template", templ);
    imshow("Edges Image", edges_img);
    imshow("Edges Template", edges_templ);
    imshow("Result", result);

    waitKey(0);
    return 0;
}

测试效果





相关推荐
旖旎夜光1 分钟前
【C++ 基础入门】类和对象(下):初始化列表、static 成员、友元与内部类
c++·笔记·学习
j7~14 分钟前
【C++ 八股文】(篇四)C++11 新特性
开发语言·c++·面试·c++11·八股文
码农飞哥16 分钟前
WorkBuddy 两个月没动,今晚测试红了 2 条
人工智能·效率·ai工具·workbuddy
eggwyw28 分钟前
C++中大括号的用法合集
开发语言·c++
xiaoye-duck30 分钟前
《C++ 项目:手写大模型接入 SDK》本地 Ollama 部署与适配
开发语言·网络·c++·语言模型
硅谷秋水34 分钟前
面向科学的科学AI智能体:任务、架构、评估与挑战综述
人工智能·科技·语言模型
叼烟扛炮35 分钟前
[LangChain] 学习笔记(04):手搓 ChatGPT 打字机——流式输出(SSE)与模型初始化选型
人工智能·笔记·chatgpt·langchain
奶油话梅糖1 小时前
2,615 个知识点、3,003 条先修边:6,800 Star 的开源知识图谱,能顺着错题从高中回溯到小学
人工智能·知识图谱
octopus_c1 小时前
STL 之 string:auto 与范围 for、常用接口、模拟实现与深浅拷贝
开发语言·c++·算法
李帅朋1 小时前
INP-Former阅读笔记
笔记·深度学习·计算机视觉