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

问题描述 投票:1回答:3

我在EmguCV教程之后用C#编写了一个用于捕获网络摄像机的应用程序。预览工作正常,但是我无法更改相机属性(如亮度,曝光等),因此需要在应用程序中实现。在文档中,有人说我应该使用CAP_PROP枚举来执行此操作,但是它不起作用,这是我更改亮度的代码:

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

但没有任何变化...

我在EmguCV论坛上找到了一些答复,他们说不应使用EmguCV来完成,但是我已经使用EmguCV完成了我的大部分项目,并且我不想因为这个而从其他库开始: /

是否有其他替代方法,但是像DirectShow一样不太复杂?也许有些lib可以设置这些属性,而无需更改我使用Emgu CV编写的其余代码?

c# opencv webcam directshow emgucv
3个回答
2
投票

我也遇到过同样的问题,发现这是可行的:

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

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,因为它可能会有所帮助。


0
投票

我也面临设置曝光_capture.SetCaptureProperty(CapProp.Exposure, 30000.0)的问题,您有解决方案吗?

我正在使用Basler相机(acA1300-30gm)。

谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.