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



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

我找到的示例以 RGB 格式获取帧,然后将其转换为

cvCvtColor(im_rgb,im_gray,CV_RGB2GRAY)  

谢谢。

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

 v4l2-ctl -c saturation=0

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

v4l2-ctl -l

简而言之,不!

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

通过这样做,我们可以避免 YUV 到 RGB 的转换。YUV到灰度的转换在计算上较少,因为Y通道确实是灰度数据。我不太确定,将不得不尝试一下。

最新更新