由于在我的嵌入式应用程序中我需要灰度图像,为了节省时间,我尝试直接从网络摄像头以灰度获取帧,而无需从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通道确实是灰度数据。我不太确定,将不得不尝试一下。