opencv c++ 相关函数(学习记录)一

cv::getTickCount

为opencv中用于获取当前系统时钟周期的函数,它通常用于性能分析和计时器,函数返回64位整数,代表了自系统启动以来经过的时钟周期数。

通常情况下,将cv::getTickCount和cv::getTickFrequency 结合使用,后者用于获取时钟的周期频率,将时钟周期转化为秒或毫秒。


#include <iostream>
#include <opencv2/opencv.hpp>

int main() {
    // 获取开始时钟周期数
    int64 start = cv::getTickCount();

    // 在这里执行你的代码片段
    // ...

    // 获取结束时钟周期数
    int64 end = cv::getTickCount();

    // 获取时钟周期的频率
    double frequency = cv::getTickFrequency();

    // 计算执行时间(以秒为单位)
    double duration = (end - start) / frequency;

    std::cout << "Execution time: " << duration << " seconds" << std::endl;

    return 0;
}

cv::minMaxLoc

用于查找图像中的最小值和最大值及其对应的位置,函数原型如下:

void minMaxLoc(InputArray src, double* minVal, double* maxVal, Point* minLoc=NULL, Point* maxLoc=NULL, InputArray mask=noArray());
src:输入的单通道图像。
minVal:指向返回的最小值的指针,如果不需要最小值,可以传入nullptr。
maxVal:指向返回的最大值的指针,如果不需要最大值,可以传入nullptr。
minLoc:指向返回的最小值的位置的指针,如果不需要最小值的位置,可以传入nullptr。
maxLoc:指向返回的最大值的位置的指针,如果不需要最大值的位置,可以传入nullptr。
mask:可选参数,用于指定要考虑的区域。如果不需要,则可以传入默认值。

当使用cv::matchTemplate 函数来进行模板匹配时,通常会得到一个匹配结果图像,为了找到最佳匹配位置,可以使用cv::minMaxLoc函数来找到这个匹配结果图像的最大最小值以及这个最值所在位置。例如:

#include <opencv2/opencv.hpp>

using namespace cv;

int main() {
    // 读取输入图像和模板图像
    Mat inputImage = imread("input_image.jpg", IMREAD_COLOR);
    Mat templateImage = imread("template_image.jpg", IMREAD_COLOR);

    // 确保图像读取成功
    if (inputImage.empty() || templateImage.empty()) {
        std::cerr << "Failed to read image files!" << std::endl;
        return -1;
    }

    // 创建匹配结果图像
    Mat resultImage;
    
    // 使用模板匹配方法进行匹配
    matchTemplate(inputImage, templateImage, resultImage, TM_CCOEFF_NORMED);

    // 定义变量来存储最大值和最大值位置
    double maxVal;
    Point maxLoc;

    // 找到匹配结果图像中的最大值及其位置
    minMaxLoc(resultImage, nullptr, &maxVal, nullptr, &maxLoc);

    // 在原始图像中绘制矩形框标记匹配位置
    rectangle(inputImage, maxLoc, Point(maxLoc.x + templateImage.cols, maxLoc.y + templateImage.rows), Scalar(0, 255, 0), 2);

    // 显示结果
    imshow("Input Image", inputImage);
    waitKey(0);

    return 0;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mmasterer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值