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

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

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

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

OpenCV

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

MacOS(OSX)

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

コンパイル

コンパイルとは、プログラミング言語のテキストソース(ソースコード)をコンピュータ上で実行可能な形式(オブジェクトコード)に変換することをいいます

C++

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

Q&A

解決済

2回答

1357閲覧

OpenCVをC++で!

KakeruM.

総合スコア16

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

OpenCV

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

MacOS(OSX)

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

コンパイル

コンパイルとは、プログラミング言語のテキストソース(ソースコード)をコンピュータ上で実行可能な形式(オブジェクトコード)に変換することをいいます

C++

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

0グッド

0クリップ

投稿2019/01/07 08:02

編集2019/01/07 13:51

MacOSでOpenCVをC++で使いたい!

上記の通り、MacOSでOpenCVをC++で使いたいのですが、ターミナル上でのコンパイルが上手くいきません。様々なサンプルプログラムを使っているので、プログラムの問題はないと思います。また、pythonでは実装できているので、コンパイルに問題があるかと思います。

エラー内容

test.cpp:1:10: fatal error: 'opencv2/core.hpp' file not found
#include <opencv2/core.hpp>
^~~~~~~~~~~~~~~~~~
1 error generated.

上記のエラーが出ます。

###ソースコード

C++

1 2#include <opencv2/core.hpp> 3#include <opencv2/imgcodecs.hpp> 4#include <opencv2/highgui.hpp> 5#include <iostream> 6 7int main(int argc, const char* argv[]) 8{ 9 // 画像データをファイルから読み込む 10 cv::Mat src = cv::imread("gear.jpg", cv::IMREAD_COLOR); 11 12 // 画像の読み込みに失敗したらエラー終了する 13 if(src.empty()) 14 { 15 std::cerr << "Failed to open image file." << std::endl; 16 return -1; 17 } 18 19 cv::namedWindow("image", cv::WINDOW_AUTOSIZE); 20 cv::imshow("image", src); 21 cv::waitKey(0); 22 cv::destroyAllWindows(); 23 24 return 0; 25}

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

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

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

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

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

fiveHundred

2019/01/07 08:06

どのような手順でビルドしたのか記載してください。
KakeruM.

2019/01/07 08:44 編集

Homebrew、cmakeを使用しました。
fiveHundred

2019/01/07 08:55

ツール名だけでなく、コマンドなどの具体的な手順まで記載するとよろしいかと思います。 あと、説明不足ですいませんが、ここでいう「ビルド」とは「OpenCVのビルド」だけでなく「あなたの作成したプログラムのコンパイル」も含みます。
KakeruM.

2019/01/07 09:11

知識不足でして、申し訳ございません。 cmakeを使用してOpenCVのビルドは行いました。インターネット上や書籍を参考にして行なっていたので、具体的なコマンド手順までは正直覚えていません。 文に記載した通り、プログラムのコンパイルをターミナル上で行うときにエラーが出てしまうようです。
fiveHundred

2019/01/07 09:28

覚えていないのは仕方ないですが、「プログラムのコンパイルをターミナル上」で行っているのであれば、そこで何かしらのコマンドを打っているはずなので、それを記載してください。 私もPineMatsuさんの言う通り、インクルードパスが通っていないのが原因だと考えていますが、具体的に教えてくれないと答えようがありません。
fiveHundred

2019/01/07 09:39

あと、historyコマンドを実行すれば、過去に入力したコマンドを確認できるので、もしビルドをターミナルで行っていたのなら、それで確認してみてください。
KakeruM.

2019/01/07 09:40

g++ test.cpp -o test.out `pkg-config --cflags opencv` `pkg-config --libs opencv` 上記のコマンドを入力しました。(test.cppは上記の通りです。) インクルードパスについても分からないので、参照できるページが有れば幸いです。
guest

回答2

0

ベストアンサー

pkg-configが上手くいっていないような気がします。

pkg-config --cflags opencv

と入力してみて、インクルードパスが正しく出力されるか確認してみてください。

もし、正しく出力できてなく、OpenCVをHomebrewでインストールしたのであれば、以下のコマンドで動作するようになるようです。

sudo cp opencv.pc /usr/local/lib/pkgconfig/opencv.pc

参考(1)参考(2)

それでも上手くいかない場合 or Homebrewは一切使っていないのであれば、-Iオプションで直接インクルードパスを指定してみてください。

投稿2019/01/07 10:03

fiveHundred

総合スコア9801

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

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

KakeruM.

2019/01/07 10:20

Package opencv was not found in the pkg-config search path. Perhaps you should add the directory containing `opencv.pc' to the PKG_CONFIG_PATH environment variable No package 'opencv' found のエラーが出てきました。その後、sudoのコマンド入力すると、 cp: opencv.pc: No such file or directory と出てきました。
fiveHundred

2019/01/07 10:28

/usr/local/Cellar/opencv3/【バージョン】/lib/pkgconfigに移動してから「sudo cp ~」を実行してみてください。
KakeruM.

2019/01/07 10:42

opencv3がopenblasという違いがありましたが、 -I/usr/local/Cellar/openblas/0.3.4/include という結果まで至りました。 もう一度コンパイルしてみましたが、同じエラーが出てきます。
fiveHundred

2019/01/07 11:23

opencv3とopenblasは別のものです。 openblas以外のディレクトリが無いのであれば、おそらくHomebrewでOpenCVはインストールされていないということなので、cmakeでインストールした先にあるincludeディレクトリを-Iオプションで指定してみてください。
KakeruM.

2019/01/07 11:49

もう一度Homebrewでインストールしたところ、openblasとは別にopencvができたので、同様にやってみました。結果 -I/usr/local/Cellar/opencv/4.0.1/include/opencv4/opencv -I/usr/local/Cellar/opencv/4.0.1/include/opencv4 が表示されました。 コンパイルしてみると、エラーは出ないのですが出力がされませんでした。
fiveHundred

2019/01/07 12:06

「出力がされませんでした」というのは「test.outを実行しても何も表示されない」ということでしょうか?
KakeruM.

2019/01/07 12:35

他にも修正したところ clang: error: no such file or directory: 'pkg-config --cflags opencv' clang: error: no such file or directory: 'pkg-config --libs opencv' のエラーが出るようになりました。
fiveHundred

2019/01/07 12:55

「`」と「'」は別物です。 「`」で囲むと、「そのコマンドを実行して、その出力を返す」という意味になります。 よって、「'」で囲むのはおかしいです。 というか、その前に私が聞いていることに答えてください。
KakeruM.

2019/01/07 13:02

何も表示されませんでした。
fiveHundred

2019/01/07 13:12

そうだとすると、私だと分からないですね。すいません。
KakeruM.

2019/01/07 13:21

分かりました。長々とご丁寧にありがとうございました。
guest

0

コンパイラのインクルードパスが通っていないのだと思います。

C/C++言語では#include文においてヘッダーファイル名を<>で囲む場合は、インクルードパスをコンパイラに対して通しておく必要があります。
私はWindows系での開発しか経験がないので、MacOSは詳しくないのですが、通常は環境変数includeにパスを設定すればインクルードできるはず。
インクルードパスの設定は開発環境のプロパティや、プロジェクトのプロパティ設定にあると思います。

投稿2019/01/07 08:10

PineMatsu

総合スコア3579

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

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

KakeruM.

2019/01/07 10:27

echo $PATH コマンド入力後に、/usr/local/include/ が表示されればよろしいということでしょうか??
PineMatsu

2019/01/08 08:10

fivehandredさんの回答でfile not foundのエラーは解消されたようですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問