奇妙な理由により、プログラムは Web カメラからフレームを読み取ることができません。ただし、Webカメラは正常に開きます。私はこの問題を検索しましたが、どれもうまくいかないさまざまな解決策を見つけました。これは私のコードです
#include <iostream>
#include <cstdlib>
#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"
int main()
{
// access the default webcam
cv::VideoCapture cap(0);
// Double check the webcam before start reading.
if ( !cap.isOpened() ){
std::cerr << "Cannot open the webcam " << std::endl;
exit (EXIT_FAILURE);
}
cv::Mat frame;
cv::namedWindow("webcam",CV_WINDOW_AUTOSIZE);
while ( true ){
// acquire frame
cap >> frame;
// Safety checking
if ( !frame.data ){
std::cerr << "Cannot acquire frame from the webcam " << std::endl;
break;
}
cv::imshow("webcam", frame);
if ( cv::waitKey(30) == 27){
std::cout << "esc key is pressed" << std::endl;
break;
}
}
return 0;
}
これはプログラムを終了する前のウィンドウです。
Windows 7(デルのラップトップ)を使用しています。コードは、.dll に対してリンクするリリース モードでコンパイルされます。OpenCV のバージョンは 2.4.10 です。コマンドプロンプトで
cl /EHsc main.cpp /Fetest.exe /I D:\CPP_Libraries\opencv_2.4.10\build\include /link /LIBPATH:D:\CPP_Libraries\opencv_2.4.10\build\x86\vc12\lib opencv_core2410.lib opencv_highgui2410.lib
ubuntu(Windows 7と一緒にデュアルブート)で同じコードを実行しましたが、HighGUIではなくウェブカメラを開き、このエラーが発生しました
HIGHGUI ERROR: V4L/V4L2: VIDIOC_S_CROP
init done
opengl support available
この問題に関する提案。掘り下げた後、何人かのpplが を指摘したので、opencvを再インストールして適切cmake
に構成する必要があります。cmake
これが本当に ubuntu と Windows の両方の問題である場合、ライブラリを再インストールせずにこの問題の解決策はありますか? ありがとう