如何在 OpenCV 中从二维数组转换为灰度图像

how to convert from a two dimensional array to a graylevel image in opencv?

本文关键字:二维数组 转换 灰度图像 OpenCV      更新时间:2023-10-16

我在我的c ++图像处理项目中使用openCV。

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

任何帮助将不胜感激。

提前谢谢。

Opencv C++界面中很容易,您需要做的就是初始化一个矩阵,请参见下面的行

cv::Mat img = cv::Mat(800, 600, CV_8UC1, I) // I[800][600]

现在你可以做任何你想做的事情,Opencv将img视为8位灰度图像。

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 中循环)。

有关高度相关的问题,请参阅此帖子