由于在我的嵌入式应用程序中,我需要灰度图像,为了节省时间,我试图直接以灰度从网络摄像头获取帧,而不是从RGB格式转换。
我找到的示例以RGB格式获取帧,然后使用
转换它cvCvtColor(im_rgb,im_gray,CV_RGB2GRAY)
感谢。
答案 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