実現したいこと
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
となっています。
あなたの回答
tips
プレビュー