我们在OpenCV或MATLAB中是否有函数将24位RGB图像转换为16位灰色图像。我尝试了CvConvertColor,但它在这里没有用。
(我可以使用cvtColor(src,bwsrc,CV_RGB2GRAY)转换为灰度,需要更多的帮助,但我想从32位变成16位。
我相信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);
你试过OpenCV的cvtcolor吗?我不确定您使用的是哪个opencv版本,但是CvConvertColor不再存在,您可能应该设置最新版本。
CVT颜色:
http://docs.opencv.org/modules/imgproc/doc/miscellaneous_transformations.html#cvtcolor
cvtColor 本身没有进一步的参数,它足够聪明,可以检查源和命运矩阵的位数。Opencv 矩阵对象,垫子对象,具有自定义的 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