我使用EmguCV教程在C#中创建了一个用于捕获网络摄像头的应用程序。 预览工作正常,但我不能改变亮度,曝光等相机属性,我需要在我的应用程序中实现这一点。在文档中,我说我应该使用CAP_PROP Enumeration,但它不起作用,这是我改变亮度的代码:
_capture.SetCaptureProperty(Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_BRIGHTNESS, newBrightnessValue);
但没有任何改变......
我在EmguCV论坛上发现了一些回复,他们说这不应该用EmguCV完成,但是我已经使用EmguCV完成了我的大部分项目,我不想重新开始使用其他库来解决这个问题。 :/
有没有其他方法可以做到这一点,但不像DirectShow那样复杂? 也许有些lib可以设置这些属性,而不需要改变我使用Emgu CV制作的其余代码?
答案 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,因为它可能有所帮助。