在 OpenCV 中使用网络摄像头捕获具有不同曝光度的连续图像

问题描述

我正在尝试用 C++ 编写一个程序,我可以在其中从具有不同曝光度的网络摄像头中顺序读取图像。应该拍摄3张图像(1张过曝,1张正常,1张曝光不足)以便后期处理。

视频代码完美运行:

void main() {

// Port 1
VideoCapture cap(0);
Mat img;

//Exposure
cap.set(CAP_PROP_EXPOSURE,-13);


while (true) {

    cap.read(img);

    imshow("Image",img);

    waitKey(1);

}

但我无法让它处理图像。问题是它似乎在改变曝光之前缓冲了 4 张图像。这是测试图像的代码

int main(int,char**) {

VideoCapture camera(0);
camera.set(CAP_PROP_EXPOSURE,-10);

Mat frame;



while (true) {
    waitKey(0);
    
    camera >> frame;
   
    imshow("Webcam",frame);
   
}
return 0;

我尝试使用 camera.set(CAP_PROP_BUFFERSIZE,1); 更改缓冲区大小以获取实际图像而不是缓冲图像,但它什么也没做。我也尝试了 grab( )relief() 函数刷新缓冲区,没有成功:(

我可以知道它是怎么做的吗?

谁能给我一个提示,改变曝光 3 次以在进一步处理中处理图像的最佳方法是什么?

感谢您的宝贵时间!

在 Windows 10 上打开 CV 版本 4.5.1

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)