【问题标题】:Loading an array of pixel values in OpenCV在 OpenCV 中加载像素值数组
【发布时间】:2017-01-16 09:05:55
【问题描述】:

我有一个 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 位灰度图像。

【问题讨论】:

标签: c++ opencv image-processing


【解决方案1】:

我想你应该尝试转换输入图像,我假设它是 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

【讨论】:

  • RGBA 图像格式的代码有效,但由于某种原因它有一个blue hue。这是我应该得到的result。我应该注意到图像是 16 位灰度的。
  • OpenCV 使用 BGR 而不是 RGB 排序。你需要 cvtColor() 和 RGB2BGR
  • @ZdaR 我试过cv::Mat m(3450, 3450, CV_8UC1, image_array) ,它最终给了我this
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-13
  • 1970-01-01
  • 2018-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多