我的c++源代码:
int main(){
if( argc != 2)
{
cout <<" Usage: display_image ImageToLoadAndDisplay" << endl;
return -1;
}
Mat image = imread(argv[1]); // Read the file
if(! image.data ) // Check for invalid input
{
cout << "Could not open or find the image" << std::endl ;
return -1;
}
namedWindow( "Display window", WINDOW_AUTOSIZE );// Create a window for display.
imshow( "Display window", image ); // Show our image inside it.
}
这只是测试opencv的简单代码。
CMakeLists.txt :
cmake_minimum_required(VERSION 3.8)
set(PROJECT_NAME testCVCL)
project(${PROJECT_NAME})
find_package(OpenCV 4 REQUIRED)
include_directories(${OpenCV_INCLUDE_DIR})
add_executable(${PROJECT_NAME}
test.cc)
target_link_libraries(${PROJECT_NAME}
${OpenCV_LIBRARIES})
编译很好,但链接有错误:
/usr/bin/ld: /usr/lib/libopencv_viz.so.4.1.1: undefined reference to `typeinfo for vtkWriter'
/usr/bin/ld: /usr/lib/libopencv_viz.so.4.1.1: undefined reference to `vtkPolyData::SetStrips(vtkCellArray*)'
/usr/bin/ld: /usr/lib/libopencv_hdf.so.4.1.1: undefined reference to `H5P_CLS_DATASET_CREATE_ID_g'
....
....
and so on
以上误差几乎由libopencv_viz和libopencv_hdf产生。
我确信这些库存在于"/usr/lib"中。
所以我感到困惑。
安装这些软件包后:
vtk
hdf5
glew
在我的电脑中,现在我可以很好地构建项目。
我没有修改上面的代码。