1

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

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

任何帮助将不胜感激。

提前致谢。

4

2 回答 2

3

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

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

现在你可以为所欲为,Opencv 将 img 视为 8 位灰度图像。

于 2012-06-19T04:48:27.133 回答
0
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(). 这需要是指向无符号字符数据的指针,如果您只是使用不属于 a 的二维数组Mat,那么您将不得不做一些不同的事情,(可能是一个循环?虽然您应该避免尽可能多地在 openCV 中循环)。

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

于 2012-06-19T01:22:13.873 回答