1

我们是否在 OpenCV 或 MATLAB 中有函数可以将 24 位 RGB 图像转换为 16 位灰度图像。我试过 CvConvertColor 但在这里没用。

(我可以使用 cvtColor(src, bwsrc, CV_RGB2GRAY) 转换为灰度,需要更多帮助,但我想将其从 32 位转换为 16 位。)

4

2 回答 2

1

我相信 matlab 中有 rgb2gray 运算符。

这是您可以从 mathworks 网站上阅读的链接:

http://www.mathworks.com/help/toolbox/images/ref/rgb2gray.html

这甚至会告诉您如何读取图像。您应该需要的大部分代码都在那里!!!

I = imread('board.tif');
J = rgb2gray(I);
figure, imshow(I), figure, imshow(J);
于 2012-06-08T18:49:40.763 回答
0

你试过 OpenCV 的 cvtcolor 吗?我不确定您使用的是哪个 opencv 版本,但 CvConvertColor 不再存在,您可能应该设置最新版本。

简历颜色:

http://docs.opencv.org/modules/imgproc/doc/miscellaneous_transformations.html#cvtcolor

cvtColor 本身没有进一步的参数,它足够聪明地检查源矩阵和命运矩阵的位数。Opencv 矩阵对象,Mat 对象,有一个自定义的 opencv 类型,可以保存它们的位数、颜色通道数和原始类型(详细信息: http: //docs.opencv.org/modules/core/doc/basic_structures.html#datatype)。

如果要确定生成的矩阵是否为 16 位,可以检查 Mat 类型。如果矩阵不在您需要的位数,opencv 有其他转换器:http ://docs.opencv.org/modules/core/doc/basic_structures.html?highlight=convert#mat-convertto

于 2012-06-08T09:23:29.937 回答