源码解析: Imread函数

46 篇文章 54 订阅
本文深入解析了OpenCV中的imread()函数,包括其声明、定义以及内部如何调用imread_()函数。同时探讨了ImageDecoder类的作用,以及findDecoder()函数在确定图像解码器中的关键角色。通过源代码分析,揭示了Mat对象如何存储图像数据,以及图像解码过程的大致流程。
摘要由CSDN通过智能技术生成

引言

imread()函数在opencv使用比较。

imread()函数

声明:
Mat imread(const string& filename, int flags);

这很标准的写法,传入一个string类型的常量引用。

定义:
Mat imread(const string& filename, int flags)
{
    Mat img; //创建一个变量
    imread_(filename,flags,LOAD_MAT,&img);
    return img;
}

其中imread_()中&img用的是地址符号,为什么呢?当然是为了改变其里面的数据了。imread( )函数是就这么几行么?这么几行能干什么呢?其实它把所有的事情交给了imread_()函数。所以,我们进一步分析imread_()函数。

imread_()函数

声明:
static void* imread_(const string& filename, i
OpenCV模版匹配是一种在图像寻找给定模板的技术。该技术在多个领域都有应用,如数字图像处理、计算机视觉等。 在OpenCV,模版匹配的函数为`matchTemplate()`。其主要步骤如下: 1. 首先,我们需要加载原始图像和待匹配的模板图像。 2. 然后,使用模版图像和原始图像进行匹配。这一步骤,我们可以选择多种匹配方法,如平方差匹配、相关性匹配和归一化相关性匹配。 3. 匹配后,我们可以使用`minMaxLoc()`函数找到匹配结果的最小值和最大值。 4. 最后,我们可以绘制矩形框来标记匹配的位置。 下面是一份简单的OpenCV模版匹配的源码示例: ```cpp #include <opencv2/opencv.hpp> int main() { // 加载原始图像和模版图像 cv::Mat img = cv::imread("original.png", cv::IMREAD_COLOR); cv::Mat templ = cv::imread("template.png", cv::IMREAD_COLOR); // 进行模版匹配 cv::Mat result; cv::matchTemplate(img, templ, result, cv::TM_CCOEFF_NORMED); // 寻找匹配结果的最小值和最大值 double minVal, maxVal; cv::Point minLoc, maxLoc; cv::minMaxLoc(result, &minVal, &maxVal, &minLoc, &maxLoc); // 绘制矩形框来标记匹配的位置 cv::rectangle(img, maxLoc, cv::Point(maxLoc.x + templ.cols, maxLoc.y + templ.rows), cv::Scalar(0, 255, 0), 2); // 显示结果图像 cv::imshow("Matched Image", img); cv::waitKey(0); return 0; } ``` 上述代码展示了一个简单的OpenCV模版匹配的流程。通过加载原始图像和模版图像,并使用`matchTemplate()`函数进行匹配,然后使用`minMaxLoc()`函数找到匹配结果的最大值位置,最后使用`rectangle()`函数绘制矩形框标记匹配位置。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值