Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在opencv中将二维数组转换为灰度图像? 我在我的C++图像处理项目中使用OpenCV。_C++_Opencv_Type 2 Dimension - Fatal编程技术网

如何在opencv中将二维数组转换为灰度图像? 我在我的C++图像处理项目中使用OpenCV。

如何在opencv中将二维数组转换为灰度图像? 我在我的C++图像处理项目中使用OpenCV。,c++,opencv,type-2-dimension,C++,Opencv,Type 2 Dimension,我有一个二维数组I[800][600],里面填充了0到255之间的值,我想把这个数组放在一个灰度级的“IplImage”中,这样我就可以查看它并使用openCV函数处理它 任何帮助都将不胜感激 提前谢谢 CvSize image_size; image_size.height = 800; image_size.width = 600; int channels = 1; IplImage *image = cvCreateImageHeader(image_size, IPL_DEPTH_8U

我有一个二维数组I[800][600],里面填充了0到255之间的值,我想把这个数组放在一个灰度级的“IplImage”中,这样我就可以查看它并使用openCV函数处理它

任何帮助都将不胜感激

提前谢谢

CvSize image_size;
image_size.height = 800;
image_size.width = 600;
int channels = 1;
IplImage *image = cvCreateImageHeader(image_size, IPL_DEPTH_8U, channels);
cvSetData(image, I, image->widthStep)
这是未经测试的,但可能需要修复的最重要的事情是
cvSetData()
的第二个参数。这需要是一个指向无符号字符数据的指针,如果您只是使用一个不属于
Mat
的2D数组,那么您必须做一些不同的事情(可能是循环?尽管您应该尽可能避免openCV中的循环)


参见一个高度相关的问题

在OpenCV C++接口中很容易,你只需要把一个矩阵放入其中,看看下面的行< /p>
cv::Mat img=cv::Mat(800600,cv_8UC1,I)//I[800][600]


现在,您可以随心所欲了,Opencv将img视为8位灰度图像。

您可以查询[this question][1],其中三个答案都是正确的。[1] :请注意答案,您应按照说明拨打
cvCreateImageHeader(cvSize(800600),IPL_DEPTH_8U,1)
后接
cvSetData()
@CookSchelling我相信这个问题有一个更清晰/准确的答案,即标记为可能重复的答案。@karlphillip是的,你是对的。谢谢,但是图像扭曲了。我的数组是双重的,这会有区别吗?这个问题是另一个问题的重复。