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

测试效果





相关推荐
胡摩西几秒前
室内定位技术方法汇总:从WiFi到超声波,机器人如何在室内“找准自己”?
人工智能·机器人·slam·室内定位·roomaps
纤纡.4 分钟前
基于 TextRNN 的微博情绪分类系统实现与解析
人工智能·算法·分类·数据挖掘
极客智造7 分钟前
C++ 类模板完全深度指南:泛型编程、特化、分离编译与工程实践
c++
Devil枫9 分钟前
【腾讯位置服务开发者征文大赛】AI 赋能小程序地图开发:腾讯地图 Miniprogram Skill 实战记录
人工智能·小程序
blackorbird10 分钟前
AI工作流自动化平台n8n正被大规模网络武器化
运维·网络·人工智能·自动化
阿杰学AI11 分钟前
AI核心知识126—大语言模型之 CrewAI 和 AutoGen(简洁且通俗易懂版)
人工智能·语言模型·自然语言处理·agent·多智能体·智能体·多智能体协作框架
企业架构师老王11 分钟前
2026年国内AI Agent选型指南:企业数字化转型中的非侵入式架构方案深度评测
人工智能·ai·架构
黎阳之光13 分钟前
黎阳之光受邀出席上海口岸联合会2026智慧口岸研讨班 无感通关方案获盛赞
大数据·人工智能·算法·安全·数字孪生
hsg7713 分钟前
简述:地理深度学习全域训练PyTorch2.7+TorchGeo等基线
人工智能·深度学习