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

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

我find的例子获取RGB中的帧,然后将其转换

cvCvtColor(im_rgb,im_gray,CV_RGB2GRAY) 

谢谢。

Solutions Collecting From Web of "使用Opencv直接从networking摄像头获取灰度图像"

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

  v4l2-ctl -c saturation=0 

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

 v4l2-ctl -l 

总之,不!

大部分相机输出都是YUV格式。 视频捕捉功能将其转换为RGB。 可以使用cvSetCaptureProperty函数将CV_CAP_PROP_CONVERT_RGB标志的值设置为FALSE。 因此输出将在YUV中。 将此图像转换为灰度图像。

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