簡體   English   中英

無法編譯 opencv:未定義的引用 imread 等

[英]Can't compile opencv : undefined reference imread etc

I want compile and this example of 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

需要的,可能不是全部。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM