【发布时间】:2016-01-08 19:37:09
【问题描述】:
我是 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,看看是否能解决任何问题。
【问题讨论】:
-
你用其他图片试过了吗?
-
你能不能换成 cout
-
用另一张图片尝试过,在
cout行中添加了<< endl,我几乎可以肯定,这不是图片是空的,而是试图用不同的库,看看它是否只是某种访问或其他系统问题。