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

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

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

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

MacOS(OSX)

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

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

C++

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

Q&A

解決済

2回答

1798閲覧

C++のコンパイルができません

退会済みユーザー

退会済みユーザー

総合スコア0

OpenCV

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

MacOS(OSX)

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

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

C++

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

0グッド

0クリップ

投稿2021/04/02 09:31

MacのターミナルでC++を使い画像を表示させたいのですが、

https://swallow-incubate.com/archives/blog/20181221/

コンパイルの時に

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 main.cpp:1:10: fatal error: 'opencv2/opencv.hpp' file not found #include <opencv2/opencv.hpp>

となってしまい、調べるとPathがどうやら設定できていないみたいです。

しかし、
https://qiita.com/t13m082h/items/c0482b87712f1d78a0f9
のサイトなどをみて、やってもできませんでした。

そこで、
https://code-database.com/knowledges/92
のサイトをみて、コンパイルの方法を

g++ -std=c++11 -o Image main.cpp `pkg-config --cflags --libs opencv4 `

にしたところ、

main.cpp:1:10: fatal error: 'opencv/opencv.hpp' file not found #include <opencv/opencv.hpp>

と出てしまいました。
どうしたらいいですか?

こちらが、プログラムの内容です。

#include <opencv/opencv.hpp> int main() { cv::Mat img; img = cv::imread("/Users/ourin/Desktop/color/ReadWrite.bmp"); cv::imshow("title", img); cv::waitKey(0); return 0; }

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

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

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

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

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

hoshi-takanori

2021/04/02 09:49

#include <opencv2/opencv.hpp> にしたらどうなりますか?
退会済みユーザー

退会済みユーザー

2021/04/02 10:00 編集

返信ありがとうございます。 修正したところ 1つ目のコンパイル方法では 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 main.cpp:1:10: fatal error: 'opencv2/opencv.hpp' file not found #include <opencv2/opencv.hpp> のままでした。 2つ目の方法では エラーは起こらずImageというのができました。 画像を出力したいのですがどうすれば良いですか?
退会済みユーザー

退会済みユーザー

2021/04/02 10:47

ありがとうございます。 できました。 1つ目のコンパイルでもやりたいのですがどうしたらいいのか、わかりませんか?
jbpb0

2021/04/02 22:14 編集

質問者さん > 1つ目のコンパイルでもやりたい うまくいくコンパイルコマンドの `...` の部分を $(...) と書き換えて、他はそのままで実行したら、どうなりますでしょうか? たとえば、 g++ -std=c++11 -o Image main.cpp `pkg-config --cflags --libs opencv4 ` でうまくいくなら、 g++ -std=c++11 -o Image main.cpp $(pkg-config --cflags --libs opencv4 ) をやってみる もし、うまくいった時に実際に実行したコマンドに違いがあったら、そこは実際のコマンドに合わせてください
退会済みユーザー

退会済みユーザー

2021/04/03 08:20

ありがとうございます。 出来ました。 よろしければ何故出来たのか教えていただけませんか? 1つ目のコンパイル方法は c++ $(pkg-config --cflags --libs opencv) main.cpp でした。それが、 g++ -std=c++11 -o Image main.cpp $(pkg-config --cflags --libs opencv4 ) なら出来ました。 $の前が前者より後者の方が長いのですが、こちらの方でコンパイルする方がいいのでしょうか?
jbpb0

2021/04/04 02:04 編集

質問者さん 「-o Image」は、コンパイルしてできる実行ファイル名の指定なので、それの有無はコンパイルできるかには関係しません (無指定ならデフォルトのファイル名になる) したがって、相違点は下記の三つですよね 「c++」←→「g++」 「-std=c++11」の有無 「opencv」←→「opencv4」 うまくいったコマンドから、相違点を一つずつ変えてみて、どれを変えたらダメになるのかを確認してみてください
退会済みユーザー

退会済みユーザー

2021/04/04 05:21

ありがとうございます。 試してみます。 jbpb0さん、よろしければ回答欄に何か書いていただけませんか? ベストアンサーで選びたいのです。
guest

回答2

0

ベストアンサー

質問には、

main.cpp:1:10: fatal error: 'opencv2/opencv.hpp' file not found

#include <opencv2/opencv.hpp>

main.cpp:1:10: fatal error: 'opencv/opencv.hpp' file not found

#include <opencv/opencv.hpp>

と、二種類が書かれてますけど、前者の

c++

1#include <opencv2/opencv.hpp>

が正しいので、コードをそちらに修正すれば、

sh

1g++ -std=c++11 -o Image main.cpp `pkg-config --cflags --libs opencv4`

でコンパイルできると思います

 
参考にされたWebサイトの一つ目に書かれているコンパイルのコマンド

sh

1c++ $(pkg-config --cflags --libs opencv) main.cpp

は、

sh

1c++ -std=c++11 $(pkg-config --cflags --libs opencv4) main.cpp

と変えたら、コンパイルできると思います (「c++」は、そのままでも、「g++」に変えても、大丈夫なはず)

「OpenCV 4.*」は、「-std=c++11」を付けないとコンパイルできません
OpenCV 4.0「OpenCV is now C++11 library and requires C++11-compliant compiler.」

「/usr/local/lib/pkgconfig」というディレクトリに、「opencv4.pc」は有るけど「opencv.pc」は無いと思います
「…opencv)」を「…opencv4)」に変えるのは、そのファイル名に合わせるためです
おそらく、以前のバージョンのOpenCVでは「opencv.pc」というファイル名だったのではないですかね

投稿2021/04/05 00:20

編集2021/04/05 12:27
jbpb0

総合スコア7653

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

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

0

pkg-configに登録されているライブラリの名前がopencvではなくopencv4だったからでは

投稿2021/04/03 20:07

yumetodo

総合スコア5852

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問