openCVでウェブカメラストリームを読み取って、コンピュータービデオを実行しようとしています。内部ウェブカメラと外部 USB ウェブカメラの両方を試してみましたが、どちらもカモラマ、ストリーマーなどのプログラムでうまく機能しています。
私のコードの一部:
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>
#include "pic_manipulation.hpp"
#include "colorDetector.h"
#include <time.h>
using namespace std;
int main ( int argc, char **argv ){
string file="../test.avi";
cv::VideoCapture capture(0);//les video
if(!capture.isOpened()){
cout <<"could not read file"<<endl;
return -1;
}
double rate=capture.get(CV_CAP_PROP_FPS);
bool stop(false);
cv::Mat frame;
cv::namedWindow("Extract frame");
int delay=1000/rate;
while(!stop){
if(!capture.read(frame))break;
cv::imshow("Extract frame", frame);
sleep(delay/1000);
if(cv::waitKey(delay)>=0){
cout<<"stop"<<endl;
stop=true;
capture.release();
}
cout<< "one loop finished"<<endl;
}
return 0;
}
プログラムをコンパイルして実行すると、エラーや警告が表示されず、if(!capture.isOpened()) で返されます (または、isOpened をスキップすると、次の if(...) で返されます)。動画ファイルは問題なく読めます。私のopencvのインストールのバグなのか、それとも問題の原因となっているのはLinux Webcam設定なのか、誰でも知っていますか? Linux mint を使用しており、cmake/g++ でプロジェクトをビルドしています