私は、OpenCV と Qt ライブラリ、および VS 2010 を使用して Win7 x64 で作業しています。
OpenCV でカメラを開き、Mat から QImage に変換した後、たとえば QLabel を使用して、Qt でキャプチャされたフレームを表示したいと思います。
関数 imshow("camera", image) および waitKey() を使用すると、ストリーミング カメラが遅くなるため、これを実行したいと考えています。
これは私のコードです:
int main () {
QApplication a(argc, argv);
QLabel myLabel;
VideoCapture cap(0);
//namedWindow(c"camera", 1);
for (;;) {
cap >> image;
//conversion from Mat to QImage
Mat dest;
cvtColor(image, dest,CV_BGR2RGB);
QImage image1= QImage((uchar*) dest.data, dest.cols, dest.rows, dest.step, QImage::Format_RGB888);
//show Qimage using QLabel
myLabel.setPixmap(QPixmap::fromImage(image1));
myLabel.show();
//imshow("camera",image);
//if (waitKey(30)>= 0) break;
}
return a.exec();
}
ウェブカメラは正しく開いて動作しますが、この画像でわかるように、キャプチャされたフレームではなく白いウィンドウが表示されます
コメントを外すと: namedWindow (..), imshow(..), if(waitKey(..)
、動作します (同じ画像を持つ 2 つのウィンドウが表示されます) が、OpenCV でキャプチャされたフレームを表示しますが、これは避けたいことです。
私の質問は次のとおりです。私は何か間違っていますか?? わかりません、Mat から Qimage への変換が間違っていますか??.. または、キャプチャしたフレームを Qt だけで表示することはできませんか?
ありがとうございました!