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;
}

测试效果





相关推荐
冬奇Lab6 小时前
【Cursor进阶实战·04】工作流革命:从“手动驾驶“到“自动驾驶“
人工智能·ai·ai编程
咕噜企业分发小米6 小时前
阿里云AI教育产品如何助力教育公平?
人工智能·阿里云·云计算
bubiyoushang8886 小时前
MATLAB空间域图像增强技术详解与实现
图像处理·计算机视觉·matlab
【ql君】qlexcel6 小时前
机器视觉软件介绍:opencv、halcon、康耐视visionpro、海康visionmaster
人工智能·opencv·计算机视觉·halcon·visionmaster·visionpro
虚神界熊孩儿6 小时前
技术实践:OpenStation 实现本地大模型与 Cursor 无缝协同,重构 AI 编程范式
人工智能·agent智能体·本地大模型部署·mcp工具
柠萌f6 小时前
破局同质化内卷:易元AI如何以「智能决策内核」重定义电商视频生产力
人工智能
byzh_rc6 小时前
[机器学习-从入门到入土] 生成式模型
人工智能·机器学习
ai_top_trends6 小时前
2026 年工作计划 PPT 制作:AI 生成 vs 手动制作对比
人工智能·python·powerpoint
Fcy6486 小时前
AVL树(C++详解版)
开发语言·c++·avl树
后端小肥肠6 小时前
我用 Coze + 飞书自动拆解了 100+ 个视频号对标账号,彻底终结「素材枯竭」困境
人工智能·aigc·coze