我在EmguCV教程之后用C#编写了一个用于捕获网络摄像机的应用程序。预览工作正常,但是我无法更改相机属性(如亮度,曝光等),因此需要在应用程序中实现。在文档中,有人说我应该使用CAP_PROP枚举来执行此操作,但是它不起作用,这是我更改亮度的代码:
_capture.SetCaptureProperty(Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_BRIGHTNESS, newBrightnessValue);
但没有任何变化...
我在EmguCV论坛上找到了一些答复,他们说不应使用EmguCV来完成,但是我已经使用EmguCV完成了我的大部分项目,并且我不想因为这个而从其他库开始: /
是否有其他替代方法,但是像DirectShow一样不太复杂?也许有些lib可以设置这些属性,而无需更改我使用Emgu CV编写的其余代码?
我也遇到过同样的问题,发现这是可行的:
CvInvoke.cvSetCaptureProperty(_capture.Ptr, CAP_PROP.CV_CAP_PROP_BRIGHTNESS, newBrightnessValue);
捕获图像后,您可以直接操纵图像的亮度,对比度,伽玛值。
所以某些技术将是这样。
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,因为它可能会有所帮助。
我也面临设置曝光_capture.SetCaptureProperty(CapProp.Exposure, 30000.0)
的问题,您有解决方案吗?
我正在使用Basler相机(acA1300-30gm)。
谢谢。