g++ -o test hahu.cpp $(pkg-config --cflags --libs opencv4)
でコンパイルしたところ下のようなエラーがでました。調べたのですが解決法がわかりません。
わかる方がいましたら教えていただきたいです。
コードも下にあります。
brewでopencvをインストール済みです。
c++
1#include <iostream> 2#include <opencv2/highgui/highgui.hpp> 3#include <opencv2/imgproc.hpp> 4 5#pragma comment( lib, "opencv_world300d.lib" ) 6 7int main(int argc, const char* argv[]) 8{ 9 int hr = -1; 10 11 try 12 { 13 cv::Mat src, edge, dst; 14 std::vector<cv::Vec4i> lines; 15 16 // 画像読み込み 17 src = cv::imread("D:/TEMP/MaverickProj/Image/OpenCV/45/building.jpg", cv::IMREAD_GRAYSCALE); 18 19 cv::namedWindow("src", 1); 20 imshow("src", src); 21 22 // 輪郭抽出 23 cv::Canny(src, edge, 50, 200, 3); 24 25 // 画像領域確保 26 dst = cv::Mat::zeros(src.rows, src.cols, CV_8UC3); 27 28 // src[0] -> dst[2], src[0] -> dst[1], src[0] -> dst[0] 29 // て感じでコピー元インデックスとコピー先インデックスを指定する 30 int fromTo[] = { 0, 2, 0, 1, 0, 0 }; 31 32 // シングルチャンネルを3チャンネルに増やして、コピーする 33 cv::mixChannels(&src, 1, &dst, 1, fromTo, 3); 34 35 // 線分検出 36 cv::HoughLinesP( 37 edge, // 8ビット,シングルチャンネルの2値入力画像.この画像は関数により書き換えられる可能性があり. 38 lines, // 検出された線分が出力されるベクトル 39 1, // ピクセル単位での距離分解能. 40 CV_PI / 180.0, // ラジアン単位での角度分解能 41 80, // 閾値.thresholdを十分に超えている直線のみが出力対象. 42 30, // 最小の線分長 43 10 // 2点が同一線分上にあると見なす場合に許容される最大距離 44 ); 45 46 // 線分描画 47 for (auto line : lines) 48 { 49 cv::line(dst, cv::Point(line[0], line[1]), cv::Point(line[2], line[3]), cv::Scalar(0, 0, 255), 1); 50 } 51 52 cv::namedWindow("dst", 1); 53 cv::imshow("dst", dst); 54 55 cv::waitKey(0); 56 57 hr = 0; 58 } 59 60 catch (cv::Exception ex) 61 { 62 std::cout << ex.err << std::endl; 63 } 64 65 // ウィンドウの破棄 66 cv::destroyAllWindows(); 67 68 return hr; 69}
Undefined symbols for architecture x86_64: "__ZN2cv11namedWindowERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi", referenced from: _main in ccLV9OlL.o "__ZN2cv6imreadERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi", referenced from: _main in ccLV9OlL.o "__ZN2cv6imshowERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_11_InputArrayE", referenced from: _main in ccLV9OlL.o ld: symbol(s) not found for architecture x86_64 collect2: error: ld returned 1 exit status
pkg-config --cflags --libs opencv4
を単独で実行するとどのように出力されますか?
pkg-config --cflags --libs opencv4
-I/usr/local/Cellar/opencv/4.4.0_2/include/opencv4 -L/usr/local/Cellar/opencv/4.4.0_2/lib -lopencv_gapi -lopencv_stitching -lopencv_alphamat -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_hfs -lopencv_img_hash -lopencv_intensity_transform -lopencv_line_descriptor -lopencv_quality -lopencv_rapid -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_sfm -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_videostab -lopencv_videoio -lopencv_viz -lopencv_xfeatures2d -lopencv_shape -lopencv_ml -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は/usr/local/binにインストールされています。
OpenCV の他のバージョンをインストールしたり自分でビルドしたりしてませんか?
他のバージョンをインストールしたと思います。
opencv-pythonなどインストールしましたが全ては覚えておりません。
どのように確認すれば良いでしょうか
回答2件
あなたの回答
tips
プレビュー