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

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

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

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

OpenCV

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

C++

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

Q&A

0回答

1902閲覧

OpenCVを使用したWebカメラの映像出力がされない問題(64bit環境)

hidaru

総合スコア4

Visual C++

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

OpenCV

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

C++

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

0グッド

1クリップ

投稿2022/04/06 02:16

編集2022/04/06 02:19

実現したいこと

OpenCVを使用してWebカメラの映像を取得したいです。

発生している問題

エラー無く動作するものの肝心のカメラの映像が僅かにノイズの走った真っ暗な画像しか出力されません。
下記画像参照
(画像上部に僅かにノイズがある、このノイズも一定せず全くない場合もあれば画像のあちこちにランダムに走り実行毎に変化する)
イメージ説明

下記コードを実行時に「Camera connect Success!」とは表示されカメラの縦横の値は表示される
ただしFPSの値は30のはずが0になっている
以下実行結果

Camera connect Success!----------------------- Width :640 Height:480 FPS :0 ---------------------------------------------- [ INFO:0] global c:\build\master_winpack-build-win64-vc15\opencv\modules\highgui\src\registry.impl.hpp (114) cv::highgui_backend::UIBackendRegistry::UIBackendRegistry UI: Enabled backends(4, sorted by priority): GTK(1000); GTK3(990); GTK2(980); WIN32(970) + BUILTIN(WIN32UI) [ INFO:0] global c:\build\master_winpack-build-win64-vc15\opencv\modules\core\src\utils\plugin_loader.impl.hpp (67) cv::plugin::impl::DynamicLib::libraryLoad load C:\opencv\build\x64\vc15\bin\opencv_highgui_gtk454_64.dll => FAILED [ INFO:0] global c:\build\master_winpack-build-win64-vc15\opencv\modules\core\src\utils\plugin_loader.impl.hpp (67) cv::plugin::impl::DynamicLib::libraryLoad load opencv_highgui_gtk454_64.dll => FAILED [ INFO:0] global c:\build\master_winpack-build-win64-vc15\opencv\modules\core\src\utils\plugin_loader.impl.hpp (67) cv::plugin::impl::DynamicLib::libraryLoad load C:\opencv\build\x64\vc15\bin\opencv_highgui_gtk3454_64.dll => FAILED [ INFO:0] global c:\build\master_winpack-build-win64-vc15\opencv\modules\core\src\utils\plugin_loader.impl.hpp (67) cv::plugin::impl::DynamicLib::libraryLoad load opencv_highgui_gtk3454_64.dll => FAILED [ INFO:0] global c:\build\master_winpack-build-win64-vc15\opencv\modules\core\src\utils\plugin_loader.impl.hpp (67) cv::plugin::impl::DynamicLib::libraryLoad load C:\opencv\build\x64\vc15\bin\opencv_highgui_gtk2454_64.dll => FAILED [ INFO:0] global c:\build\master_winpack-build-win64-vc15\opencv\modules\core\src\utils\plugin_loader.impl.hpp (67) cv::plugin::impl::DynamicLib::libraryLoad load opencv_highgui_gtk2454_64.dll => FAILED [ INFO:0] global C:\build\master_winpack-build-win64-vc15\opencv\modules\highgui\src\backend.cpp (90) cv::highgui_backend::createUIBackend UI: using backend: WIN32 (priority=970) [ INFO:0] global C:\build\master_winpack-build-win64-vc15\opencv\modules\highgui\src\window_w32.cpp (3013) cv::impl::Win32BackendUI::createWindow OpenCV/UI: Creating Win32UI window: win (1) [ INFO:0] global c:\build\master_winpack-build-win64-vc15\opencv\modules\core\src\parallel\registry_parallel.impl.hpp (96) cv::parallel::ParallelBackendRegistry::ParallelBackendRegistry core(parallel): Enabled backends(3, sorted by priority): ONETBB(1000); TBB(990); OPENMP(980) [ INFO:0] global c:\build\master_winpack-build-win64-vc15\opencv\modules\core\src\utils\plugin_loader.impl.hpp (67) cv::plugin::impl::DynamicLib::libraryLoad load C:\opencv\build\x64\vc15\bin\opencv_core_parallel_onetbb454_64d.dll => FAILED[ INFO:0] global c:\build\master_winpack-build-win64-vc15\opencv\modules\core\src\utils\plugin_loader.impl.hpp (67) cv::plugin::impl::DynamicLib::libraryLoad load opencv_core_parallel_onetbb454_64d.dll => FAILED [ INFO:0] global c:\build\master_winpack-build-win64-vc15\opencv\modules\core\src\utils\plugin_loader.impl.hpp (67) cv::plugin::impl::DynamicLib::libraryLoad load C:\opencv\build\x64\vc15\bin\opencv_core_parallel_tbb454_64d.dll => FAILED [ INFO:0] global c:\build\master_winpack-build-win64-vc15\opencv\modules\core\src\utils\plugin_loader.impl.hpp (67) cv::plugin::impl::DynamicLib::libraryLoad load opencv_core_parallel_tbb454_64d.dll => FAILED [ INFO:0] global c:\build\master_winpack-build-win64-vc15\opencv\modules\core\src\utils\plugin_loader.impl.hpp (67) cv::plugin::impl::DynamicLib::libraryLoad load C:\opencv\build\x64\vc15\bin\opencv_core_parallel_openmp454_64d.dll => FAILED[ INFO:0] global c:\build\master_winpack-build-win64-vc15\opencv\modules\core\src\utils\plugin_loader.impl.hpp (67) cv::plugin::impl::DynamicLib::libraryLoad load opencv_core_parallel_openmp454_64d.dll => FAILED カメラ読み込み中 カメラ読み込み中 カメラ読み込み中 カメラ読み込み中 ・ ・ ・

該当のソースコード

C++

1#include <iostream> 2#include <opencv2/opencv.hpp> 3 4using namespace cv; 5 6int main() 7{ 8 int camera_id = 0; 9 10 VideoCapture cap(camera_id); 11 if (!cap.isOpened()) 12 { 13 //読み込みに失敗したときの処理 14 std::cout << "Camera connect Error!\n"; 15 return -1; 16 } 17 18 std::cout << "Camera connect Success!-----------------------\n"; 19 std::cout << "Width :" << cap.get(3) << "\n"; 20 std::cout << "Height:" << cap.get(4) << "\n"; 21 std::cout << "FPS :" << cap.get(5) << "\n"; 22 std::cout << "----------------------------------------------\n"; 23 Mat frame; //取得したフレーム 24 25 while (true)//無限ループ 26 { 27 cap.read(frame); 28 if (frame.empty()) { 29 std::cout << "Mat Load Error!\n"; 30 return -1; 31 } 32 imshow("win", frame);//画像を表示. 33 imwrite("camera_picture.png",frame); 34 waitKey(1); 35 std::cout << "カメラ読み込み中\n"; 36 } 37 destroyAllWindows();// ウィンドウを閉じる. 38 cap.release(); 39 40 return 0; 41}

試したこと

試しに他ソフトでカメラ映像を確認したところ無事に出力されるため、カメラの故障ではないと思われます。

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

Windows10
VisualStudio2019
OpenCV 4.5.4
となっています。

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

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

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

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

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

Bego

2022/04/06 02:31

OpenCV 関連 DLL のロードに失敗しているからぢゃないですか?
hidaru

2022/04/06 04:11

失敗しても起動はされるものなんでしょうか?
Bull

2022/04/06 12:38

私も同じような開発環境ですが、プログラムは問題なく実行できるようです。 表示できないのは動画だけでしょうか? 画像ファイル (.jpg, .png など) は正常に表示できますか? 画像ファイルも正常に表示できないとすると、開発環境の構築 (設定) に問題があるかもしれません。
yominet

2022/04/06 15:24

別のカメラに接続してしまっているとか
hidaru

2022/04/07 04:36

>>Bull様 表示されないのは動画だけです。 試しにpng画像を読み込むと表示されました >>yominet様 その線は薄いと思います。 試しにカメラを抜いて実行すると「Camera connect Error!」と表示されるので。 念の為にcamera_idを-1から5まで試しましたが0以外ではエラーになりました。(カメラを挿している場合)
Bull

2022/04/07 07:08

> 表示されないのは動画だけです。 > 試しにpng画像を読み込むと表示されました そうすると、開発環境の問題は無さそうですね。 VideoCapture cap(camera_id); を VideoCapture cap(camera_id, cv::CAP_DSHOW); とすると、どうでしょうか?
hidaru

2022/04/07 08:29

ご指摘いただいたコードで変えて実行してみましたが、変わらずエラーは無いものの画面は真っ黒のままになっています。
Bull

2022/04/08 05:04

そうなると OpenCV では扱えないデバイスの可能性もありますが、よく分からないです。 別のカメラを用意できれば、原因の切り分けができるかもしれませんが。
hidaru

2022/04/08 07:59

一応OpenCvを元としたVb.net内でのOpenCVSharpを使った実行では同じカメラで読み込みが出来ました。 あまり関係は無いでしょうか…?
Bull

2022/04/08 08:41

すいませんが、OpenCVSharp に付いてはよく知らないです。 Python の opencv-python に関しては、C++ のソースがそのまま使われているようなので、Python で実行できて、C++ でエラーになることはあまり考えられないのですが。
yominet

2022/04/09 13:05

OpenCVのC++&VisualStudioということで いつものrelease版とDebug版混じりが発生してるかもしれないですね 動作確認している構成はdebugかreleaseか、 リンクしているlibファイル、および動作時に読み込みしている(配置している)dllと 構成が、きちんとあっているか?など確認してみてはいかかでしょうか
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問