使用 Visual C++ 和 OpenCV 2.1 将 BMP 打开到数组
Posted
技术标签:
【中文标题】使用 Visual C++ 和 OpenCV 2.1 将 BMP 打开到数组【英文标题】:Open BMP to an array using Visual C++ and OpenCV 2.1 【发布时间】:2011-08-04 17:04:16 【问题描述】:我打开一张图片:
IplImage *img = cvLoadImage("C:\\foo.bmp",-1);
现在我想把这张图片放到三个二维数组中。
unsigned int r[img->width][img->height];
unsigned int g[img->width][img->height];
unsigned int b[img->width][img->height];
这不起作用,因为我得到“表达式必须具有恒定值”。为什么不是恒定的?
如何将每个颜色通道分离到每个数组?
【问题讨论】:
【参考方案1】:cvSplit
将图像拆分为单通道数组 (documentation)。
【讨论】:
谢谢!这首先对我有帮助。我也使用 opencv 数据类型。【参考方案2】:像这样的静态数组分配要求维度是编译时间常量。参数img->width
和img->height
直到运行时才知道(编译器无法知道 foo.bmp 的大小),因此您不能像那样静态分配数组。
最好还是像 SSteve 提到的那样使用cvSplit
。
【讨论】:
以上是关于使用 Visual C++ 和 OpenCV 2.1 将 BMP 打开到数组的主要内容,如果未能解决你的问题,请参考以下文章
发现凸缺陷?在 OpenCV 2.3 中,c++ 与 MS Visual Studio 2010
如何在 Visual C++ 2010 或 2008 中使用 OpenCV 2.1 访问 ip camera (compro IP50W)
如何在 OPENCV 3.x C++ Visual Studio 2015 中声明 BruteForceMatcher