微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决在 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 举报,一经查实,本站将立刻删除。