質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

0回答

402閲覧

【環境構築】C++でOpenCVの導入

vac

総合スコア11

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

1グッド

1クリップ

投稿2019/04/04 13:40

編集2022/01/12 10:55

概要

OpenCVを初めて利用する者です。
OpenCVの最新版(2019/4現在)であるver4.0.1を自分のMacに導入して、C++での環境を構築しようと考えているところ、うまくいかないことがあったので質問させていただきました。

症状

以下のコード(main.cpp)をまず実行したいと考えております。

#include <opencv2/opencv.hpp> int main(){ cv::Mat a = cv::imread("img.jpg", 1); cv::imshow("hello", a); cv::waitKey(); }

Homebrewで

brew install pkg-config brew install opencv

とダウンロードを進め、対象コードのディレクトリで

g++ `pkg-config --libs --cflags opencv4` main.cpp

を実行しました。すると、

Undefined symbols for architecture x86_64: "cv::imread(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)", referenced from: _main in ccEnGkIv.o "cv::imshow(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::_InputArray const&)", referenced from: _main in ccEnGkIv.o ld: symbol(s) not found for architecture x86_64 collect2: error: ld returned 1 exit status

というエラーが発生します。これの解決法を教えて欲しいです。どうかお願いします。

追加情報

pkg-configのコマンドは正しく動いていると考えています。

$ pkg-config --libs --cflags opencv4 -I/usr/local/Cellar/opencv/4.0.1/include/opencv4/opencv -I/usr/local/Cellar/opencv/4.0.1/include/opencv4 -L/usr/local/Cellar/opencv/4.0.1/lib -lopencv_gapi -lopencv_stitching -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_dnn_objdetect -lopencv_dpm -lopencv_face -lopencv_fuzzy -lopencv_hfs -lopencv_img_hash -lopencv_line_descriptor -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_stereo -lopencv_structured_light -lopencv_phase_unwrapping -lopencv_superres -lopencv_optflow -lopencv_surface_matching -lopencv_tracking -lopencv_datasets -lopencv_dnn -lopencv_plot -lopencv_videostab -lopencv_video -lopencv_xfeatures2d -lopencv_shape -lopencv_ml -lopencv_ximgproc -lopencv_xobjdetect -lopencv_objdetect -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_flann -lopencv_xphoto -lopencv_photo -lopencv_imgproc -lopencv_core

また、一行目でエラーを出していないことから<opencv2/opencv.hpp>が発見できていない訳ではなさそうです。ですが、インクルードができているのになぜ失敗するのかがわかりません。<opencv2/highgui.hpp>や<opencv2/core.hpp>などもインクルードしてみても結果は変わりません。バージョンの違いのせいでしょうか?それともそもそも何かが間違っているのでしょうか?

yumetodo👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cateye

2019/04/04 14:04

リンクエラーと思われます。何かライブラリをリンクする必要が有るのでは?
vac

2019/04/04 14:54 編集

pkg-config --cflags opencv4 が出力してくれている通り、/usr/local/Cellar/opencv/4.0.1/lib 配下にある libopencv_highguiなどの静的ライブラリ群が導入されているはずで、そのディレクトリにちゃんとそれらのファイル群があることを確認したのですが、なぜかこのような結果になってしまいます。
vac

2019/04/04 14:53

これ以上どう調べたら良いのか...わからない状況です...
yumetodo

2019/04/13 04:31

ダメ元で g++ -I/usr/local/Cellar/opencv/4.0.1/include/opencv4/opencv -I/usr/local/Cellar/opencv/4.0.1/include/opencv4 -L/usr/local/Cellar/opencv/4.0.1/lib -lopencv_highgui -lopencv_imgcodecs main.cpp としてみるとかでしょうか・・・。不思議だ。あとはコンパイルに-vをつけてなんかでないか見るとか・・・
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問