无法编译opencv:未定义的引用imread等



我想要编译和OpenCV的这个例子:https://docs.opencv.org/ref/master/d3/d50/group__imgproc__colormap.html

当我想编译:g++ myfile.cxx -o myfile时,我得到了这个错误:

fatal error opencv2/core.hpp not such file or directory

因此,我打开.bashrc并添加:export PATH=${PATH}:/usr/local/include/opencv4,当我编译时,我现在这样做:g++ myfile.cxx -o myfile -I/usr/include/opencv4

现在我得到了许多关于未定义引用的错误:

/usr/bin/ld : /tmp/ccISlbHF.o : dans la fonction « main » :
tryopencv.cxx:(.text+0xb1) : référence indéfinie vers « cv::imread(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int) »
/usr/bin/ld : tryopencv.cxx:(.text+0x195) : référence indéfinie vers « cv::applyColorMap(cv::_InputArray const&, cv::_OutputArray const&, int) »
/usr/bin/ld : tryopencv.cxx:(.text+0x20e) : référence indéfinie vers « cv::imshow(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::_InputArray const&) »
/usr/bin/ld : tryopencv.cxx:(.text+0x245) : référence indéfinie vers « cv::waitKey(int) »
/usr/bin/ld : /tmp/ccISlbHF.o : dans la fonction « cv::Mat::~Mat() » :
tryopencv.cxx:(.text._ZN2cv3MatD2Ev[_ZN2cv3MatD5Ev]+0x3d) : référence indéfinie vers « cv::fastFree(void*) »
/usr/bin/ld : /tmp/ccISlbHF.o : dans la fonction « cv::Mat::release() » :
tryopencv.cxx:(.text._ZN2cv3Mat7releaseEv[_ZN2cv3Mat7releaseEv]+0x4f) : référence indéfinie vers « cv::Mat::deallocate() »
collect2: error: ld returned 1 exit status

我在很多论坛上搜索,很多人都在谈论这个:pkg-config opencv --cflags --libs我需要输入这个命令opencv4,而不是opencv,因为它不起作用,使用opencv4我得到了这个:

-I/usr/include/opencv4/opencv -I/usr/include/opencv4 -lopencv_stitching -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_dnn_objdetect -lopencv_dnn_superres -lopencv_dpm -lopencv_highgui -lopencv_face -lopencv_freetype -lopencv_fuzzy -lopencv_hdf -lopencv_hfs -lopencv_img_hash -lopencv_line_descriptor -lopencv_quality -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_shape -lopencv_stereo -lopencv_structured_light -lopencv_phase_unwrapping -lopencv_superres -lopencv_optflow -lopencv_surface_matching -lopencv_tracking -lopencv_datasets -lopencv_text -lopencv_dnn -lopencv_plot -lopencv_ml -lopencv_videostab -lopencv_videoio -lopencv_viz -lopencv_ximgproc -lopencv_video -lopencv_xobjdetect -lopencv_objdetect -lopencv_calib3d -lopencv_imgcodecs -lopencv_features2d -lopencv_flann -lopencv_xphoto -lopencv_photo -lopencv_imgproc -lopencv_core

我有点迷路了:我该如何解决这个问题,用OpenCV进行编译和测试?

您可以在编译命令中使用pkg-config

g++ myfile.cxx -o myfile `pkg-config opencv4 --cflags --libs`

它将设置包含路径和库

您必须将库添加到编译器命令(-l参数(:

g++ myfile.cxx -o myfile  -I/usr/include/opencv4 -lopencv_stitching -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_dnn_objdetect -lopencv_dnn_superres -lopencv_dpm -lopencv_highgui -lopencv_face -lopencv_freetype -lopencv_fuzzy -lopencv_hdf -lopencv_hfs -lopencv_img_hash -lopencv_line_descriptor -lopencv_quality -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_shape -lopencv_stereo -lopencv_structured_light -lopencv_phase_unwrapping -lopencv_superres -lopencv_optflow -lopencv_surface_matching -lopencv_tracking -lopencv_datasets -lopencv_text -lopencv_dnn -lopencv_plot -lopencv_ml -lopencv_videostab -lopencv_videoio -lopencv_viz -lopencv_ximgproc -lopencv_video -lopencv_xobjdetect -lopencv_objdetect -lopencv_calib3d -lopencv_imgcodecs -lopencv_features2d -lopencv_flann -lopencv_xphoto -lopencv_photo -lopencv_imgproc -lopencv_core

所需要的可能不是全部。

最新更新