📌  相关文章
📜  预期的 Ptr<cv::UMat>对于参数 &#39;img&#39; (1)

📅  最后修改于: 2023-12-03 15:28:55.613000             🧑  作者: Mango

关于参数 'img' 预期的 Ptrcv::UMat

对于 OpenCV 中的图像处理,很多情况下我们需要处理的是 cv::Mat 类型,但是有些情况下我们也可以使用 cv::UMat 类型,它是一个带有上传和下载功能的 OpenCL 类型,并支持由 OpenCL 提供的本地加速。而 Ptr<cv::UMat> 则表示一个指向 cv::UMat 类型对象的指针。

在参数上,如果函数需要传入一个图像,那么如果使用 cv::UMat 类型对象作为参数替代 cv::Mat 类型对象作为参数,可以提高函数的计算速度和处理效率。而关于这种参数类型的预期,我们建议使用 Ptr<cv::UMat> 这种类型指向 cv::UMat 类型的对象。

下面是使用 Ptr<cv::UMat> 的一个例子:

#include <opencv2/opencv.hpp>

using namespace std;
using namespace cv;

void loadImage(Ptr<UMat> img)
{
    // 使用 Ptr<cv::UMat> 加载一张图片
    *img = imread("example.jpg");
}

int main()
{
    // 创建一个 Ptr<cv::UMat> 对象
    Ptr<UMat> img = makePtr<UMat>();

    // 调用 loadImage 函数处理图片
    loadImage(img);

    // 显示图片
    imshow("Image", *img);
    waitKey();

    return 0;
}

在这个例子中,我们可以看到 loadImage 函数接收的参数类型为 Ptr<UMat>,而不是常规的 cv::Mat。这样,在对图像进行处理之后,我们可以通过 *img 的方式直接获取到处理后的图像。