2012-06-08 215 views
1

我们是否有在OpenCV或MATLAB中将24位RGB图像转换为16位灰度图像的功能。我试过CvConvertColor,但在这里没用。MATLAB/Opencv:将24位RGB图像转换为16位灰色

(我可以转换使用cvtColor(SRC,bwsrc,CV_RGB2GRAY),需要更多的帮助,以灰度,但我想让它16位从32位)。

回答

0

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

cvtcolor:

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位,你可以检查矩阵类型。如果矩阵不在你需要的位数,opencv有其他的转换器:http://docs.opencv.org/modules/core/doc/basic_structures.html?highlight=convert#mat-convertto

+0

要转换为灰度图像,我们可以使用cvtColor(SRC,bwsrc,CV_RGB2GRAY); 但我无法理解如何使用相同的函数将像素大小从32位(RGB)转换为16灰度。你能否在cvtColor(src,bwsrc,.....)中写出相应的参数; – gpuguy

+0

我编辑了答案以回应您的评论。 –