gpt4 book ai didi

c++ - 断言失败(size.width>0 && size.height>0)

转载 作者:IT老高 更新时间:2023-10-28 22:04:23 24 4
gpt4 key购买 nike

我正在使用带有 OpenCV 2.4.7 的 Visual Studio Express 2013,遵循 tutorial .

我花了几个小时在网上搜索解决方案,包括所有相关的 SO 问题。我试过了:

  • VideoCapture::open的返回值为1

  • 将 waitKey() 延迟延长至 50 毫秒及之后的 500 毫秒

  • 设置窗口的尺寸

  • 在 Visual C++ 上创建另一个项目

  • 打开现有图像而不是从相机读取(同样的错误)

但没有运气,请帮忙!

这是我的代码:

#include <opencv/cv.h>
#include <opencv/highgui.h>
#include <iostream>

using namespace std;
using namespace cv;

int main() {
Mat image;

VideoCapture cap;
int camOpen = cap.open(CV_CAP_ANY);

namedWindow("window", CV_WINDOW_AUTOSIZE);

while (true) {
cap >> image;

imshow("window", image);

// delay 33ms
waitKey(33);
}

}

当我编译并运行它时,我得到了以下错误:

OpenCV Error: Assertion failed (size.width>0 && size.height>0) in cv::imshow, file ........\opencv\modules\highgui\src\window.cpp, line 261

错误发生在 imshow("window", image); 行。当我评论它时,没有任何投诉。


更新:

为什么会发生这个错误的一个合理解释是我的网络摄像头需要时间才能启动,这就是为什么 image.empty() 最初为真,因此调用 abort() 函数来退出程序。

有代码

if (!image.empty()) {
imshow("window", image);
}

我们可以等待相机启动

最佳答案

我试过你的代码,对我来说它可以工作(它可视化当前的网络摄像头输入)!
我使用 OpenCV 2.4.7 在 Visual Studio 2012 Ultimate 上运行它。
...
报错是因为图片为空,试试这个:

while (true) {
cap >> image;

if(!image.empty()){
imshow("window", image);
}

// delay 33ms
waitKey(33);
}

您从网络摄像头收到的第一张图片可能是空的。在这种情况下,imshow 不会抛出错误。所以希望下一个输入图像不是空的。

关于c++ - 断言失败(size.width>0 && size.height>0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20821269/

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