使用Opencv直接从网络摄像头获取灰度图像

时间:2014-02-19 13:01:55

标签: c++ linux opencv webcam grayscale

由于在我的嵌入式应用程序中,我需要灰度图像,为了节省时间,我试图直接以灰度从网络摄像头获取帧,而不是从RGB格式转换。

我找到的示例以RGB格式获取帧,然后使用

转换它
cvCvtColor(im_rgb,im_gray,CV_RGB2GRAY)  

感谢。

2 个答案:

答案 0 :(得分:1)

简而言之,不!

大多数相机输出都是YUV格式。 videoCapture函数将其转换为RGB。 cvSetCaptureProperty函数可用于将CV_CAP_PROP_CONVERT_RGB标志的值设置为FALSE。 因此输出将为YUV。将此图像转换为灰度图像。

通过这样做,我们可以避免YUV到RGB的转换。由于Y通道确实是灰度数据,因此YUV到灰度的转换在计算上不那么密集。 我不太确定,不得不试一试。

答案 1 :(得分:1)

在Linux上,只需使用v4l2-ctl命令降低所有饱和度并让相机吐出灰度输出:

 v4l2-ctl -c saturation=0

当然,仅当您的网络摄像头支持saturation选项时才会有效。要检查它是否存在,请查看所有可用的控件:

v4l2-ctl -l