gpt4 book ai didi

c++ - Opencv 的 image.empty() 函数不工作

转载 作者:太空狗 更新时间:2023-10-29 23:14:16 26 4
gpt4 key购买 nike

下面的代码可以正常工作,直到在程序运行时移除 USB 摄像头。断开 USB 摄像头后,我看到一张空白图像,但程序应该停止,因为 img_cam1.empty()!cap_cam1.isOpened() 应该为真。然而,出于某种原因,两者都是错误的!

这是什么原因造成的?

VideoCapture cap_cam1(0);
Mat img_cam1;

while(true)
{

cap_cam1 >> img_cam1;

if (img_cam1.empty() || !cap_cam1.isOpened())
{
cap_cam1.release();
break;
}

else {
imshow("Live",img_cam1);
if (!img_cam1.isContinuous())
break;
img_cam1.empty();
img_cam1.release();

if(waitKey(33)==27) break;
}
}

USB摄像头拔出后如何停止程序?

最佳答案

来自Documentation (强调我的):

If the previous call to VideoCapture constructor or VideoCapture::open succeeded, the method returns true.

看来你需要调用open在检查 cap_cam1 是否打开之前。所以像下面这样:

cap_cam1.open(1);
if (img_cam1.empty() || !cap_cam1.isOpened())

虽然我自己不知道确切的语法,但无法显示解决问题所需的确切代码。

关于 img_cam1.empty() 的问题,我没有任何帮助,但是 documentationempty() 引号上:

The method returns true if Mat::total() is 0 or if Mat::data is NULL. Because of pop_back() and resize() methods M.total() == 0 does not imply that M.data == NULL.

所以也许数据仍然在 img_cam1 中,尽管我不调试就不知道。

关于c++ - Opencv 的 image.empty() 函数不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34524202/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com