img_show.cpp内容:
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
using namespace cv;
int main( int argc, char** argv )
{
char* imageName = argv[1];
Mat image;
image = imread("1.png", 1);//读入图片
if( !image.data)//判断是否有数据
{
printf( " No image data \n " );
return -1;
}
namedWindow( imageName, CV_WINDOW_AUTOSIZE );
imshow( imageName, image );//显示图片
printf( " hello " );
waitKey(0);
return 0;
}
CMakeLists.txt内容:
cmake_minimum_required(VERSION 2.8)
project(img_show)
add_executable(img_show img_show.cpp)
find_package(OpenCV 3 REQUIRED)
target_link_libraries(img_show ${OpenCV_LIBS})
编译生成
mkdir build
cd build
cmake ..
make
运行
./img_show
编译时出现下列错误:
undefined reference to 'cv::imread(cv::String const&, int)'
undefined reference to 'cv::String::deallocate()'
解决方法:在CMakeLists.txt加入安装OpenCV的版本号:
将
find_package( OpenCV REQUIRED )
更改为
find_package( OpenCV 3 REQUIRED )
注:之前报这个错:
The target name "test" is reserved or not valid for certain CMake features,
such as generator expressions, and may result in undefined behavior.
目标名称的“test”是保留或不适用于CMake features,
故将项目名称改为img_show