如何使用EmguCV设置网络摄像头属性?

时间:2014-03-25 17:33:32

标签: c# opencv webcam directshow emgucv

我使用EmguCV教程在C#中创建了一个用于捕获网络摄像头的应用程序。 预览工作正常,但我不能改变亮度,曝光等相机属性,我需要在我的应用程序中实现这一点。在文档中,我说我应该使用CAP_PROP Enumeration,但它不起作用,这是我改变亮度的代码:

_capture.SetCaptureProperty(Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_BRIGHTNESS, newBrightnessValue);

但没有任何改变......

我在EmguCV论坛上发现了一些回复,他们说这不应该用EmguCV完成,但是我已经使用EmguCV完成了我的大部分项目,我不想重新开始使用其他库来解决这个问题。 :/

有没有其他方法可以做到这一点,但不像DirectShow那样复杂? 也许有些lib可以设置这些属性,而不需要改变我使用Emgu CV制作的其余代码?

2 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,发现这是有效的:

CvInvoke.cvSetCaptureProperty(_capture.Ptr, CAP_PROP.CV_CAP_PROP_BRIGHTNESS, newBrightnessValue);

答案 1 :(得分:0)

您可以在捕获图像后直接操作图像的亮度,对比度和伽玛值。

所以有些技术会是这样的。

Image<Bgr, byte> myImage;// you can store a static image from disk or 
                         //load one from web cam frame in it

myImage= myImage.Mul(brightValue);// multiply the image with decimal number 
                                  //to increase the brightness

myImage._EqualizeHist(); //to improve the contrast read documentation,
                         //as you can play around the threshold values too.

myImage._GammaCorrect(1.8d);// give a decimal value to adjust the gamma value

您可以参考this post,因为它可能有所帮助。