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