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

测试效果





相关推荐
AI工具测评与分析1 分钟前
红仿大师功能波动致歉说明!手把手教程 + 备用工具一次配齐
人工智能·玫瑰克隆·红仿大师
OpenBayes贝式计算4 分钟前
一键移除复杂物体!Netflix VOID 让视频消除拥有「物理直觉」;告别乱码与解析难题,MDPBench 数据集为「真实复杂场景」文档解析而生
人工智能·机器学习·图像识别
搬砖的小明20266 分钟前
Google BwA 杭州场(Gemma 4 专题全国首发)线下活动记录
人工智能
向量引擎8 分钟前
向量引擎中转站偷走我半条命后终于把API密钥这件事整明白了
人工智能·aigc·api·ai编程·ai写作·key·api调用
龙萱坤诺11 分钟前
智创聚合API上线 Claude Opus 4.7,编码与多模态能力全面拉满
人工智能·ai编程·claude·ai开发
沪漂阿龙11 分钟前
深度拆解LangChain Chains与LCEL:从Runnable到生产级AI工作流
人工智能·langchain
大模型RAG和Agent技术实践11 分钟前
项目实战:深入剖析 Dify 知识库管理系统的 RBAC 权限设计与实现
人工智能·dify·rag
飞哥数智坊13 分钟前
9位分享者,141位到场者,TRAE Friends@济南第5场线下活动又爆了
人工智能·ai编程·solo
wydxry14 分钟前
深入解析自适应光学中的哈特曼波前传感技术:原理、算法与智能化前沿
大数据·人工智能·算法
算.子16 分钟前
【Spring AI 实战】七、Embedding 向量化与向量数据库选型对比
人工智能·spring·embedding