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

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

新規登録して質問してみよう
ただいま回答率
85.44%
VC++

VC++ (Visual C++) とは、Microsoft製のC++のための統合開発環境です。

OpenCV

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

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

Q&A

解決済

1回答

1560閲覧

OpenCVとC++を使って、ウェブカメラから取得した画像を表示したい

ecobag

総合スコア3

VC++

VC++ (Visual C++) とは、Microsoft製のC++のための統合開発環境です。

OpenCV

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

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

0グッド

0クリップ

投稿2023/03/27 06:29

編集2023/03/27 22:57

イメージ説明### 実現したいこと

OpenCVでUSBカメラ画像の取得をしたい

前提

Microsoft Visual StudioでOpenCVを使うための練習をしています。
ウェブカメラから画像を取得するためのプログラムを作成しましたが
エラーが発生しています。

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

E0020 識別子 "String" が定義されていません jigoku2 C:\opencv\build\include\opencv2\core\base.hpp 298

E0020 識別子 "String" が定義されていません jigoku2 C:\opencv\build\include\opencv2\core\base.hpp 635

E0020 識別子 "String" が定義されていません jigoku2 C:\opencv\build\include\opencv2\core\base.hpp 638

E0135 名前空間 "cv" にメンバー "waitKey" がありません jigoku2 C:\Users\PC70R183\source\repos\jigoku2\jigoku2\jigoku2.cpp 23

E0135 名前空間 "cv" にメンバー "VideoCapture" がありません jigoku2 C:\Users\PC70R183\source\repos\jigoku2\jigoku2\jigoku2.cpp 6

E0135 名前空間 "cv" にメンバー "imwrite" がありません jigoku2 C:\Users\PC70R183\source\repos\jigoku2\jigoku2\jigoku2.cpp 31

E0135 名前空間 "cv" にメンバー "imshow" がありません jigoku2 C:\Users\PC70R183\source\repos\jigoku2\jigoku2\jigoku2.cpp 22

E0135 名前空間 "cv" にメンバー "destroyAllWindows" がありません jigoku2 C:\Users\PC70R183\source\repos\jigoku2\jigoku2\jigoku2.cpp 34

E1696 ソース ファイルを開けません "opencv2/videoio.hpp" jigoku2 C:\opencv\build\include\opencv2\opencv.hpp 92

E1696 ソース ファイルを開けません "opencv2/video.hpp" jigoku2 C:\opencv\build\include\opencv2\opencv.hpp 89

E1696 ソース ファイルを開けません "opencv2/stitching.hpp" jigoku2 C:\opencv\build\include\opencv2\opencv.hpp 86

E1696 ソース ファイルを開けません "opencv2/photo.hpp" jigoku2 C:\opencv\build\include\opencv2\opencv.hpp 83

E1696 ソース ファイルを開けません "opencv2/opencv_modules.hpp" jigoku2 C:\opencv\build\include\opencv2\core\base.hpp 52

E1696 ソース ファイルを開けません "opencv2/objdetect.hpp" jigoku2 C:\opencv\build\include\opencv2\opencv.hpp 80

E1696 ソース ファイルを開けません "opencv2/ml.hpp" jigoku2 C:\opencv\build\include\opencv2\opencv.hpp 77

E1696 ソース ファイルを開けません "opencv2/imgproc.hpp" jigoku2 C:\opencv\build\include\opencv2\opencv.hpp 74

E1696 ソース ファイルを開けません "opencv2/imgcodecs.hpp" jigoku2 C:\opencv\build\include\opencv2\opencv.hpp 71

E1696 ソース ファイルを開けません "opencv2/highgui.hpp" jigoku2 C:\opencv\build\include\opencv2\opencv.hpp 68

E1696 ソース ファイルを開けません "opencv2/flann.hpp" jigoku2 C:\opencv\build\include\opencv2\opencv.hpp 65

E1696 ソース ファイルを開けません "opencv2/features2d.hpp" jigoku2 C:\opencv\build\include\opencv2\opencv.hpp 59

E1696 ソース ファイルを開けません "opencv2/dnn.hpp" jigoku2 C:\opencv\build\include\opencv2\opencv.hpp 62

E1696 ソース ファイルを開けません "opencv2/core/vsx_utils.hpp" jigoku2 C:\opencv\build\include\opencv2\core\base.hpp 661

E1696 ソース ファイルを開けません "opencv2/core/utility.hpp" jigoku2 C:\opencv\build\include\opencv2\core.hpp 3307

E1696 ソース ファイルを開けません "opencv2/core/types.hpp" jigoku2 C:\opencv\build\include\opencv2\core\mat.hpp 52

E1696 ソース ファイルを開けません "opencv2/core/types.hpp" jigoku2 C:\opencv\build\include\opencv2\core\persistence.hpp 100

E1696 ソース ファイルを開けません "opencv2/core/traits.hpp" jigoku2 C:\opencv\build\include\opencv2\core\matx.hpp 53

E1696 ソース ファイルを開けません "opencv2/core/saturate.hpp" jigoku2 C:\opencv\build\include\opencv2\core\matx.hpp 54

E1696 ソース ファイルを開けません "opencv2/core/ovx.hpp" jigoku2 C:\opencv\build\include\opencv2\core.hpp 3309

E1696 ソース ファイルを開けません "opencv2/core/optim.hpp" jigoku2 C:\opencv\build\include\opencv2\core.hpp 3308

E1696 ソース ファイルを開けません "opencv2/core/operations.hpp" jigoku2 C:\opencv\build\include\opencv2\core.hpp 3305

E1696 ソース ファイルを開けません "opencv2/core/neon_utils.hpp" jigoku2 C:\opencv\build\include\opencv2\core\base.hpp 660

E1696 ソース ファイルを開けません "opencv2/core/matx.hpp" jigoku2 C:\opencv\build\include\opencv2\core\mat.hpp 51

E1696 ソース ファイルを開けません "opencv2/core/matx.hpp" jigoku2 C:\opencv\build\include\opencv2\core\types.hpp 58

E1696 ソース ファイルを開けません "opencv2/core/mat.inl.hpp" jigoku2 C:\opencv\build\include\opencv2\core\mat.hpp 3764

E1696 ソース ファイルを開けません "opencv2/core/mat.hpp" jigoku2 C:\opencv\build\include\opencv2\core\persistence.hpp 101

E1696 ソース ファイルを開けません "opencv2/core/cvstd.inl.hpp" jigoku2 C:\opencv\build\include\opencv2\core.hpp 3306

E1696 ソース ファイルを開けません "opencv2/core/cvstd.hpp" jigoku2 C:\opencv\build\include\opencv2\core\base.hpp 58

E1696 ソース ファイルを開けません "opencv2/core/cvstd.hpp" jigoku2 C:\opencv\build\include\opencv2\core\types.hpp 57

E1696 ソース ファイルを開けません "opencv2/core/cvdef.h" jigoku2 C:\opencv\build\include\opencv2\core\base.hpp 57

E1696 ソース ファイルを開けません "opencv2/core/cvdef.h" jigoku2 C:\opencv\build\include\opencv2\core\cvstd.hpp 51

E1696 ソース ファイルを開けません "opencv2/core/cvdef.h" jigoku2 C:\opencv\build\include\opencv2\core\cvstd_wrapper.hpp 8

E1696 ソース ファイルを開けません "opencv2/core/cvdef.h" jigoku2 C:\opencv\build\include\opencv2\core\matx.hpp 51

E1696 ソース ファイルを開けません "opencv2/core/cvdef.h" jigoku2 C:\opencv\build\include\opencv2\core\traits.hpp 47

E1696 ソース ファイルを開けません "opencv2/core/cvdef.h" jigoku2 C:\opencv\build\include\opencv2\core\types.hpp 56

E1696 ソース ファイルを開けません "opencv2/core/check.hpp" jigoku2 C:\opencv\build\include\opencv2\core\base.hpp 662

E1696 ソース ファイルを開けません "opencv2/core/bufferpool.hpp" jigoku2 C:\opencv\build\include\opencv2\core\mat.hpp 54

E1696 ソース ファイルを開けません "opencv2/core/base.hpp" jigoku2 C:\opencv\build\include\opencv2\core\matx.hpp 52

E1696 ソース ファイルを開けません "opencv2/calib3d.hpp" jigoku2 C:\opencv\build\include\opencv2\opencv.hpp 56

C1083 include ファイルを開けません。'opencv2/opencv_modules.hpp':No such file or directory jigoku2 C:\opencv\build\include\opencv2\core\base.hpp 52

該当のソースコード

C++

#include <iostream>
#include "C:\opencv\build\include\opencv2\opencv.hpp"

int main(int argh, char* argv[])

{

cv::VideoCapture cap(0);//デバイスのオープン //cap.open(0);//こっちでも良い. if (!cap.isOpened())//カメラデバイスが正常にオープンしたか確認. { //読み込みに失敗したときの処理 return -1; } cv::Mat frame; //取得したフレーム while (cap.read(frame))//無限ループ { // //取得したフレーム画像に対して,クレースケール変換や2値化などの処理を書き込む. // cv::imshow("win", frame);//画像を表示. const int key = cv::waitKey(1); if (key == 'q'/*113*/)//qボタンが押されたとき { break;//whileループから抜ける. } else if (key == 's'/*115*/)//sが押されたとき { //フレーム画像を保存する. cv::imwrite("img.png", frame); } } cv::destroyAllWindows(); return 0;

}

試したこと

当初はhttps://docs.opencv.org/3.0-beta/modules/videoio/doc/reading_and_writing_video.html
にある公式のソースコードをベースとしていたが
・名前空間にVideoCaputure,imwrite,imshow,waitKeyがありませんと表示される
・includeファイルが開けない
状態だった。
includeファイルの問題は解決できたが、名前空間の問題は解決できなかった。
恐らくウェブカメラから画面を取得するにあたって、VideoCaputureがうまく
呼び出せていないのではないかと考えている。

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

使用ソフト
・Microsoft Visual Studio

Opencv Ver.4.5.4
Cドライブ直下に保存

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

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

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

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

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

episteme

2023/03/27 17:01 編集

> https://docs.opencv.org/3.0-beta/modules/videoio/doc/reading_and_writing_video.html ここ↑にあるコードに一切の変更を加えずコンパイル/リンク/実行できることを確認しました(VS2022/OpenCV4.5.5)。 まずはそれを目指すのが先決じゃなかろうか。 include-path がちゃんと設定されていないと思われます。(前回、同じ指摘されてなかったっけ?) # だから #include "\opencv\build\include\opencv2\opencv.hpp" なんてことしたんでしょ?
ecobag

2023/03/27 22:57

こちらでは上記のコードではコンパイル/リンク/実行ができませんでした。 また、以前ご指摘の通りinclude-pathを正しく設定したうえでエラーが出ている状態です。 具体的には識別子VideoCapture、識別子namedWindow、識別子cvtColor、識別子COLOR_BGR2GRAY、識別子 GaussianBlur、識別子Canny、識別子imshow、識別子waitKeyが 定義されていないと表示されています。 以前はinclude-passの設定を修正したら実行できましたが、今回も同じなのでしょうか?
episteme

2023/03/27 23:33 編集

> 以前ご指摘の通りinclude-pathを正しく設定したうえでエラーが出ている状態です。 正しく設定できているなら #include "opencv2/opencv.hpp" のままで コンパイルできるはず。 あなたの書いたコードも同じく、僕トコでは img.png ができましたヨ
ecobag

2023/03/28 01:23

ならやっぱりinclude-pathが間違っているんですかね。。。 プログラム上で使用するやつを設定すればいいってことくらいしかわかってませんが 前回成功したものとはパスは別物ってことですよね?Matとかimshowのある場所のパスを設定すると思うんですけど、場所は以前と同じでしょうか?
episteme

2023/03/28 01:43

C:\opencv\build\include が設定する include-path になるはず。
ecobag

2023/03/28 02:28

上記に修正したところ、プログラム上のエラーは消えましたが LNK2019 未解決の外部シンボル "void __cdecl cv::namedWindow(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,int)" (?namedWindow@cv@@YAXAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@H@Z) が関数 main で参照されました jigoku2 C:\Users\PC70R183\source\repos\jigoku2\jigoku2\jigoku2.obj 1 LNK2019 未解決の外部シンボル "void __cdecl cv::imshow(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class cv::debug_build_guard::_InputArray const &)" (?imshow@cv@@YAXAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEBV_InputArray@debug_build_guard@1@@Z) が関数 main で参照されました jigoku2 C:\Users\PC70R183\source\repos\jigoku2\jigoku2\jigoku2.obj 1 LNK2019 未解決の外部シンボル "void __cdecl cv::GaussianBlur(class cv::debug_build_guard::_InputArray const &,class cv::debug_build_guard::_OutputArray const &,class cv::Size_<int>,double,double,int)" (?GaussianBlur@cv@@YAXAEBV_InputArray@debug_build_guard@1@AEBV_OutputArray@31@V?$Size_@H@1@NNH@Z) が関数 main で参照されました jigoku2 C:\Users\PC70R183\source\repos\jigoku2\jigoku2\jigoku2.obj 1 LNK2019 未解決の外部シンボル "void __cdecl cv::cvtColor(class cv::debug_build_guard::_InputArray const &,class cv::debug_build_guard::_OutputArray const &,int,int)" (?cvtColor@cv@@YAXAEBV_InputArray@debug_build_guard@1@AEBV_OutputArray@31@HH@Z) が関数 main で参照されました jigoku2 C:\Users\PC70R183\source\repos\jigoku2\jigoku2\jigoku2.obj 1 LNK2019 未解決の外部シンボル "void __cdecl cv::Canny(class cv::debug_build_guard::_InputArray const &,class cv::debug_build_guard::_OutputArray const &,double,double,int,bool)" (?Canny@cv@@YAXAEBV_InputArray@debug_build_guard@1@AEBV_OutputArray@31@NNH_N@Z) が関数 main で参照されました jigoku2 C:\Users\PC70R183\source\repos\jigoku2\jigoku2\jigoku2.obj 1 LNK2019 未解決の外部シンボル "public: __cdecl cv::VideoCapture::VideoCapture(int,int)" (??0VideoCapture@cv@@QEAA@HH@Z) が関数 main で参照されました jigoku2 C:\Users\PC70R183\source\repos\jigoku2\jigoku2\jigoku2.obj 1 LNK2019 未解決の外部シンボル "public: __cdecl cv::Mat::~Mat(void)" (??1Mat@cv@@QEAA@XZ) が関数 main で参照されました jigoku2 C:\Users\PC70R183\source\repos\jigoku2\jigoku2\jigoku2.obj 1 LNK2019 未解決の外部シンボル "public: __cdecl cv::Mat::Mat(void)" (??0Mat@cv@@QEAA@XZ) が関数 main で参照されました jigoku2 C:\Users\PC70R183\source\repos\jigoku2\jigoku2\jigoku2.obj 1 LNK2019 未解決の外部シンボル "public: virtual __cdecl cv::VideoCapture::~VideoCapture(void)" (??1VideoCapture@cv@@UEAA@XZ) が関数 main で参照されました jigoku2 C:\Users\PC70R183\source\repos\jigoku2\jigoku2\jigoku2.obj 1 LNK2019 未解決の外部シンボル "public: virtual bool __cdecl cv::VideoCapture::isOpened(void)const " (?isOpened@VideoCapture@cv@@UEBA_NXZ) が関数 main で参照されました jigoku2 C:\Users\PC70R183\source\repos\jigoku2\jigoku2\jigoku2.obj 1 LNK2019 未解決の外部シンボル "int __cdecl cv::waitKey(int)" (?waitKey@cv@@YAHH@Z) が関数 main で参照されました jigoku2 C:\Users\PC70R183\source\repos\jigoku2\jigoku2\jigoku2.obj 1 LNK1120 11 件の未解決の外部参照 jigoku2 C:\Users\PC70R183\source\repos\jigoku2\x64\Debug\jigoku2.exe 1 が出てきました。最後のLNK1120は他のエラーを消せば消えるやつですね。 LNK2019についてもパスの問題でしょうか?
episteme

2023/03/28 02:42

library-path および ライブラリの指定はできてる?
ecobag

2023/03/28 02:47

C:\opencv\build\x64\vc15\lib となっているので指定はできていると思います。
episteme

2023/03/28 02:51

リンクすべきライブラリの設定は?
ecobag

2023/03/28 02:54

追加のライブラリディレクトリです。正直なところ、質問の意味にピンと来ていませんがあっていますか?
episteme

2023/03/28 03:09

ライブラリそのものは? 僕とこでは opencv_world455.lib だけど
ecobag

2023/03/28 03:56

opencv_world455.libでした。
episteme

2023/03/28 04:08

それが設定されているなら LNK2019 は報告されないはず
ecobag

2023/03/28 04:22

確認したいのですが、ライブラリの確認はどこで行いましたか?自分はファイルを開いて 上記のファイルがライブラリのアイコンついてるのを確認しましたが。。。
episteme

2023/03/28 04:33

プロパティ:構成プロパティ/リンカ/全般/追加のライブラリディレクトリ および プロパティ:構成プロパティ/リンカ/全般/入力/追加の依存ファイル
ecobag

2023/03/28 04:48

追加のライブラリディレクトリ C:\opencv\build\x64\vc15\lib 追加の依存ファイル opencv_world454.lib となっています。 そして現在のエラーですが、 エラー LNK1104 ファイル 'opencv_world454.lib' を開くことができません。 C:\Users\PC70R183\source\repos\jigoku2\jigoku2\jigoku2.vcxproj C:\Users\PC70R183\source\repos\jigoku2\jigoku2\LINK 1 となっています。
ecobag

2023/03/28 05:17

追加で警告も出てきました。 重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態 警告 C6294 for-loop の定義が無効です。ループ ボディは実行されません。 jigoku2 C:\opencv\build\include\opencv2\core\matx.hpp 562 警告 C6294 for-loop の定義が無効です。ループ ボディは実行されません。 jigoku2 C:\opencv\build\include\opencv2\core\matx.hpp 570 警告 C6294 for-loop の定義が無効です。ループ ボディは実行されません。 jigoku2 C:\opencv\build\include\opencv2\core\matx.hpp 578 警告 C6201 インデックス '2' は、有効なインデックスの範囲 '0' から '1' (スタックが割り当てられた可能性のあるバッファー 'this->val') を超えています。 jigoku2 C:\opencv\build\include\opencv2\core\matx.hpp 562 警告 C6201 インデックス '3' は、有効なインデックスの範囲 '0' から '2' (スタックが割り当てられた可能性のあるバッファー 'this->val') を超えています。 jigoku2 C:\opencv\build\include\opencv2\core\matx.hpp 570 警告 C6201 インデックス '4' は、有効なインデックスの範囲 '0' から '3' (スタックが割り当てられた可能性のあるバッファー 'this->val') を超えています。 jigoku2 C:\opencv\build\include\opencv2\core\matx.hpp 578 警告 C26495 変数 'cv::MatStep::buf' が初期化されていません。メンバー変数は必ず初期化してください (type.6)。 jigoku2 C:\opencv\build\include\opencv2\core\mat.inl.hpp 1239 警告 C26495 変数 'cv::MatStep::buf' が初期化されていません。メンバー変数は必ず初期化してください (type.6)。 jigoku2 C:\opencv\build\include\opencv2\core\mat.inl.hpp 1245 警告 C26451 演算のオーバーフロー: 4 バイトの値に演算子 '*' を使用し、結果を 8 バイトの値にキャストしています。オーバーフローを避けるため、演算子 '*' を呼び出す前に値を幅の広い型にキャストしてください (io.2)。 jigoku2 C:\opencv\build\include\opencv2\core\mat.inl.hpp 1874 警告 C26451 演算のオーバーフロー: 4 バイトの値に演算子 '*' を使用し、結果を 8 バイトの値にキャストしています。オーバーフローを避けるため、演算子 '*' を呼び出す前に値を幅の広い型にキャストしてください (io.2)。 jigoku2 C:\opencv\build\include\opencv2\core\utility.hpp 568 警告 C26451 演算のオーバーフロー: 4 バイトの値に演算子 '+' を使用し、結果を 8 バイトの値にキャストしています。オーバーフローを避けるため、演算子 '+' を呼び出す前に値を幅の広い型にキャストしてください (io.2)。 jigoku2 C:\opencv\build\include\opencv2\core\mat.inl.hpp 1874 警告 C26451 演算のオーバーフロー: 4 バイトの値に演算子 '+' を使用し、結果を 8 バイトの値にキャストしています。オーバーフローを避けるため、演算子 '+' を呼び出す前に値を幅の広い型にキャストしてください (io.2)。 jigoku2 C:\opencv\build\include\opencv2\core\utility.hpp 568
episteme

2023/03/28 07:08

>エラー LNK1104 ファイル 'opencv_world454.lib' を開くことができません。 こっちと異なります。ごめんなさい対処法が思いつかない。
ecobag

2023/03/28 07:32

構成プロパティ/VC++ ディレクトリ:外部インクルード ディレクトリにC:\opencv\build\include 構成プロパティ/VC++ ディレクトリ:ライブラリ ディレクトリにC:\opencv\build\x64\vc16\lib 追加の依存ファイルをopencv_world454d.libからopencv_world454d.libに変更することで ウェブカメラの映像を出力できました。 長時間付き合っていただきありがとうございました。
episteme

2023/03/28 07:42 編集

解決したんならよかった/お役に立てて何より(本件closeしてください)
jbpb0

2023/03/28 08:13

> 追加の依存ファイルをopencv_world454d.libからopencv_world454d.libに変更 同じに見えますが、何を変えたのでしょうか?
guest

回答1

0

自己解決

構成プロパティ/VC++ ディレクトリ:外部インクルード ディレクトリにC:\opencv\build\include
構成プロパティ/VC++ ディレクトリ:ライブラリ ディレクトリにC:\opencv\build\x64\vc16\lib
追加の依存ファイルをopencv_world454d.libからopencv_world454d.libに変更することで
ウェブカメラの映像を出力できました。
長時間付き合っていただきありがとうございました。

投稿2023/03/28 07:53

ecobag

総合スコア3

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.44%

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

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

質問する

関連した質問