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

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

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

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

MacOS(OSX)

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

C++

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

受付中

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

vac
vac

総合スコア0

OpenCV

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

MacOS(OSX)

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

C++

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

0回答

1評価

1クリップ

23閲覧

投稿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 ...(略)

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

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

cateye
cateye

2019/04/04 14:04

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

2019/04/04 14:54 編集

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

2019/04/04 14:53

これ以上どう調べたら良いのか...わからない状況です...
yumetodo
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をつけてなんかでないか見るとか・・・

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

OpenCV

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

MacOS(OSX)

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

C++

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