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

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

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

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

C++

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

Q&A

解決済

1回答

905閲覧

visual studioでopen cvを動かす(mac)

Naruaki

総合スコア2

OpenCV

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

C++

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

0グッド

0クリップ

投稿2021/11/26 05:38

編集2021/11/26 18:22

前提・実現したいこと

プログラミング初心者です。Visual studio codeでopen cvを動かしたいなと思い、インターネットの記事を参考にopen cvをダウンロードし、簡単なプログラムを書いて実行して見ました。しかし、このプログラムで画像が画面に表示されるはずが、実行ファイルを実行しても、画像が表示されずに、すぐ終了してしまいます。どなたか詳しい方で、原因を教えていただけると嬉しいです。

発生している問題・エラーメッセージ

%cd build % cmake .. cmake --build . [ 50%] Building CXX object CMakeFiles/main.dir/main.cpp.o [100%] Linking CXX executable main [100%] Built target main %./main

該当のソースコード

CmakeLists

1cmake_minimum_required(VERSION 3.1) 2project (test) 3set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall") 4find_package(OpenCV REQUIRED) 5include_directories( ${OpenCV_INCLUDE_DIRS} ) 6add_executable(main main.cpp) 7target_link_libraries(main ${OpenCV_LIBS}) 8 9} 10 11

main

1#include <stdio.h> 2#include <opencv2/opencv.hpp> 3int main() { 4 cv::Mat img = cv::imread("sample.jpg"); 5 if(img.empty()) { 6 return -1; 7 } 8 cv::namedWindow("test", cv::WINDOW_AUTOSIZE); 9 cv::imshow("test", img); 10 cv::waitKey(0); 11 cv::destroyWindow("test"); 12 return 0; 13}

試したこと

上のソースコードを入力する前に、brewコマンドで、($brew install opencv と$brew install cmake)をターミナルで行いました。また、visual studio codeにCMake Toolsという拡張機能をインストールしました。そして、以下の写真のようにc_cpp_proprerties.json fileの"include Path"にopencv2までのPATHを入力しました。("/usr/local/Cellar/opencv/4.5.3_3/include/opencv4")
イメージ説明

補足情報(FW/ツールのバージョンなど)

visual studio codeも含め、設定が怠っているところがあるかも知れないのでご指摘いただきたいです。
イメージ説明
based on epistemeさんのcomment
イメージ説明
based on jbpb0さんのcomment
イメージ説明
イメージ説明
イメージ説明
![イメージ説明]

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

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

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

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

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

episteme

2021/11/26 05:57

sample.jpg がちゃんと読み込まれずに return -1; してるんじゃありませんか? 確認しましたか?
Naruaki

2021/11/26 06:04

何も返ってこないんですよね。
episteme

2021/11/26 07:07 編集

いやだから「何も返ってこないのは sample.jpg がちゃんと読み込まれずに return -1; してるからじゃありませんか? 確認しましたか?」と訊いています。 if(img.empty()) { "読めませんでしたー!!" と出力する return -1; } ってやってみたらどうなりますか?
Naruaki

2021/11/26 07:28

表示されないです。今実行したら、#include <opencv2/opencv.hpp>のところでエラーが起こってるみたいです。ただiclude pathにopencv2までのPATHを入力するだけじゃだめなのでしょうか?
episteme

2021/11/26 08:03

エラーとは? コンパイル時エラーですか? リンク時エラーですか? 実行時エラーですか? エラー・メッセージを"そのまま"示してください。
jbpb0

2021/11/26 09:47 編集

VS Codeを使わずにターミナルで下記を実行したら、正常にコンパイルできますか? 見ながら手入力するとスペルミスするかもしれないので、2〜3行目はここからコピペしてください cd main.cppがある場所の絶対パス ls -l main.cpp g++ -std=c++11 main.cpp -o main `pkg-config --cflags opencv4` `pkg-config --libs opencv4` 2行目「ls...」は、main.cppがある場所に1行目の「cd...」で移れてるかの確認です ls: main.cpp: No such file or directory とならなくて、main.cppのサイズとか更新日時とかが表示されたら、大丈夫です
jbpb0

2021/11/26 09:53

> #include <opencv2/opencv.hpp>のところでエラーが起こってる 本当にそうなら、コンパイル(ビルド)ができないので、「main」というファイルができないはずなので、 > [100%] Built target main %./main まで行かないと思うけど
Naruaki

2021/11/26 18:26 編集

@epistemeさん メッセージはエラーではないようでした。visual studioを終了し、もう一度ファイルを開いたら赤い波線は消えました。
Naruaki

2021/11/26 18:31

@jbpb0さん 言われた通りにmacのターミナルで実行して見ました。ターミナルでは正常に動くようです。visual studioの方に問題があるのでしょうか?原因分かりましたら、教えていただきたいです。多分./main(上のvisual studioのterminalで実行した際の写真)は通っていると思うのですが、画像が表示されないんですよね。何か設定しないといけない場所があるのでしょうか?
jbpb0

2021/11/26 21:19

「build」というディレクトリがありますよね そこに「sample.jpg」をコピーしてから、VS Codeでやってみてください
Naruaki

2021/11/26 22:19

できました!!imread関数にパスを渡してなかったのにも関わらず、実行ファイルと同じディレクトリに、任意の画像がなかったから表示されなかったということでしょうか?初歩的なところで間違っていたのですね。ネット記事を見ながらやる際には気をつけないとですね。
jbpb0

2021/11/26 22:47

そうです 質問の「発生している問題・エラーメッセージ」の先頭の > %cd build で「build」に移動してからビルド・実行してるので、パスを指定してないファイルは「build」にあるのが前提です
Naruaki

2021/11/26 22:50

なるほど、親切に分かりやすく指示、教えていただきありがとうございました。ベストアンサーにしたいのですが、コメントではできないみたいです。
jbpb0

2021/11/26 23:21

VS Codeは使ってないので未確認ですが、「opencv2/opencv.hpp」の場所はcmakeが解決してくれるはずなので、VS Codeで設定しなくても、コンパイラは場所が分かってビルド・実行はできそうな気がします ただし、ビルド・実行できるとしても、VS Codeは場所が分からず、波線が付くかもしれません
guest

回答1

0

ベストアンサー

「build」というディレクトリに「sample.jpg」をコピーしてください

質問の「発生している問題・エラーメッセージ」の先頭の

%cd build

で「build」に移動してからビルド・実行してるので、パスを指定してないファイルは「build」にないといけません

投稿2021/11/26 23:01

jbpb0

総合スコア7653

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問