c++ - OpenCV imread 默默失败的原因?

标签 c++ opencv

一般来说,我是 openCV 和 C/C++ 的新手。我正在研究 this教程并使用 CMake 生成我的 makefile。我构建第一个程序(读取和显示)没有问题,但是当我运行可执行文件时,没有任何反应,我必须关闭我的终端,因为它只是挂起。即使我只使用以下代码也会发生这种情况:

#include "opencv2/highgui/highgui.hpp"
#include "opencv2/core/core.hpp"
#include <iostream>

using namespace cv;
using namespace std;

int main( int argc, const char** argv )
{
     cout << "start\n";
     Mat img = imread("MyPic.jpg");
     return 0;
}

当我删除 Mat img 行时,会输出“start”,但当我包含它时,即使这样也不会发生。 MyPic.jpg 肯定与 ReadDisplay.cpp 和 CMakeLists.txt 在同一个目录中。我正在运行 Ubuntu 14.04。最后,这是 CMakeLists.txt:

cmake_minimum_required(VERSION 2.8)
project( ReadDisplay )
find_package( OpenCV REQUIRED )
include_directories( ${OpenCV_INCLUDE_DIRS} )
add_executable( ReadDisplay ReadDisplay.cpp )
target_link_libraries( ReadDisplay ${OpenCV_LIBS} )

关于这导致问题的原因有什么见解吗?

编辑

上面的代码是为了解释我是如何调试的,以及是什么导致了问题;我已经尝试通过检查图像大小和其他方法来捕捉故障,将其隔离为系统/配置问题。根据 this帖子,我正在从源代码重建 openCV,看看是否能解决任何问题。

最佳答案

首先你需要确定问题出在找图片上,所以请不要跳过这部分代码:

if (img.empty()) //check whether the image is loaded or not
  {
      cout << "Error : Image cannot be loaded..!!" << endl;
      //system("pause"); //wait for a key press
      return -1;
  }

因此,如果问题出在查找图像上,为避免混淆,您可以传递绝对路径,例如:/home/user/my_pic.jpg

关于c++ - OpenCV imread 默默失败的原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34684760/

相关文章:

c++ - 为什么条件中定义的变量不能用参数构造?

c++ - 如何在 C++ 中检查整数单链表的对称性?

java - import org.opencv.highgui 无法解析

c++ - iOS 上的 OpenCv 2.4.9 background_segm.hpp #include <list> 未找到

c++ - `Counter::metaObject() const'的多重定义

java - 从灰度图像构建颜色条

c++ - C++ 编译器会自动将我的函数设置为静态函数吗?

ubuntu - ubuntu 11.10 上的 opencv 安装

python - 试图发送一个大文件,python 套接字

opencv - 旋转不变检测器的最佳解决方案是什么?