c++ - 如何在 QtCreator 上使用带有 highGUI 的 OpenCV?

标签 c++ qt opencv raspberry-pi3

我正在尝试显示使用 cv2 库中的 highgui 模块从磁盘加载的基本图像。 我可以在制作 Qt Widgets 应用程序时执行此操作,但 Qt 窗口变得多余;但是,当使用控制台应用程序时,我收到此错误:

OpenCV Error: Assertion failed (size.width>0 && size.height>0) in imshow, file /build/opencv-ISmtkH/opencv-2.4.9.1+dfsg/modules/highgui/src/window.cpp, line 269
terminate called after throwing an instance of 'cv::Exception'
  what():  /build/opencv-ISmtkH/opencv-2.4.9.1+dfsg/modules/highgui/src/window.cpp:269: error: (-215) size.width>0 && size.height>0 in function imshow

这是我的代码:

int main ()
{ 
    cv::Mat inputImg = cv::imread("/home/pi/scrot1.png");
    cv::imshow("Display Image", inputImg);
}

我已经用 python 编写了一个可以通过终端运行的脚本,它调用了 high gui 模块。我想用 C++ 编写这个,但我似乎无法加载基本图像!

编辑:

路径实际上是无效的。但是,即使路径正确,我也无法使用 HighGui 看到图像。

最佳答案

该错误表示图片加载不正确。 您可以使用以下方法检查:

if(image.empty()) {
   // not loaded correctly
}

您需要确定:

  1. 路径有效
  2. 图像没有损坏
  3. 您有权访问该文件夹

要真正显示图像,您需要在 imshow 之后使用 cv::waitKey()

关于c++ - 如何在 QtCreator 上使用带有 highGUI 的 OpenCV?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40653885/

相关文章:

c++ - 如何在 C++ 中克隆未知动态类型的对象?

C++虚函数覆盖

c++ - 如何使用qt中的信号槽控制函数的返回

c++ - Qt 写入 QTextStream 指针

c++ - 如何通过 cstdio::scanf 在一行中读入三个整数?

c++ - 外部 "C"是否应包含 C++ 函数的声明或定义?

c++ - 在 C++ 中读取/写入大文件的性能问题

python - OpenCV:以给定角度穿过轮廓质心的线

image - 透视变换四边形平面中的给定点(x,y)到矩形平面的点(x',y')?

python - 使用 Python、OpenCV 和卡尔曼滤波进行二维运动估计