【问题标题】:OpenCv Fastest way to make Mat Image from 1 D Array in C++OpenCv 在 C++ 中从一维数组制作 Mat 图像的最快方法
【发布时间】:2018-12-13 12:59:25
【问题描述】:

我是OpenCV 的新手。我有一个unsigned char 大小为5038848 的数组来创建一个Image of 1944*2592 什么是从该一维数组制作图像的最快方法。 我已经使用Nested Loop 完成了这项工作,但我认为创建单个帧需要很多时间。 那么谁能告诉另一个比这更快的解决方案。

【问题讨论】:

    标签: c++ arrays image opencv mat


    【解决方案1】:

    您可以创建一个空的Mat 并将数据设置为您的数组。

    unsigned char* array = ...
    img = cv::Mat(1944,2592, CV_8U);
    img.data = array;
    
    cv::imshow('My image', img);
    cv::waitKey()
    

    更快的方法是使用您的数据直接创建Mat。这样,在创建对象时不会分配数据指针。它也可能更安全,因为您不直接操作内部数据指针。

    img = cv::Mat(1944, 2592, CV_8U, array);
    

    【讨论】:

    • @ChandrapalSinghJhala 即使您的数组是一维的,Mat 对象也会将其解释为二维。
    • @ChandrapalSinghJhala 查看this Mat constructor,它采用IntPtr 作为参数来使用现有数据创建图像。在 C++ 中确实有相同类型的构造函数,您可以使用它来代替我展示的方法。
    猜你喜欢
    • 1970-01-01
    • 2015-03-14
    • 2014-04-27
    • 1970-01-01
    • 1970-01-01
    • 2023-02-06
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    相关资源
    最近更新 更多