我有一个32位整数数组,其中包含要创建Mat图像的3450x3450图像的像素值。尝试了以下内容:

int *image_array;
image_array = (int *)malloc( 3450*3450*sizeof(int) );
memset( (char *)image_array, 0, sizeof(int)*3450*3450 );
image_array[0] = intensity_of_first_pixel;
...
image_array[11902499] = intensity_of_last_pixel;
Mat M(3450, 3450, CV_32FC1, image_array);

在显示图像时,我得到了黑屏。我还要注意该数组包含一个16位灰度图像。

最佳答案

我想您应该尝试使用以下方法转换输入图像(假定是RGB [A]格式):

cv::Mat m(3450, 3450, CV_8UC1, image_array) // For GRAY image
cv::Mat m(3450, 3450, CV_8UC3, image_array) // For RGB image
cv::Mat m(3450, 3450, CV_8UC4, image_array) // For RGBA image

关于c++ - 在OpenCV中加载像素值数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41672721/

10-11 04:01