Qlabel での opencv ビデオの表示に問題があります。
私はopencvとqtを初めて使用しています。今週、qtボタンイベントを使用して、opencvからウィジェットのqlabelにビデオキャプチャを表示する小さな演習を試みていました。しかし、奇妙なことに、以下に添付されているコードを実行すると、「プログラムは予期せず終了しました」と表示されます。何も問題がないようですので、助けてください。お忙しい中、コスタリカからのご挨拶をありがとうございました。
PS GUIなしでopenCvコードを実行しようとすると、buttonClickedイベントと cvShowImage("Video", frame); 内のコードを使用するだけです。ビデオを表示するには、プログラムは正常に実行されますが、このようなエラーといくつかの警告が取り除かれます。
HIGHGUI エラー: V4L/V4L2: VIDIOC_S_CROP
libpng 警告: libpng-1.2.49 でビルドされたアプリケーションが 1.5.12 で実行
libpng 警告: libpng-1.2.49 でビルドされたアプリケーションが 1.5.12 で実行
libpng 警告: libpng- でビルドされたアプリケーション1.2.49 が 1.5.12 で実行されている
libpng 警告: アプリケーションは libpng-1.2.49 でビルドされているが 1.5.12 で実行されている
libpng 警告: アプリケーションは libpng-1.2.49 でビルドされているが 1.5.12 で実行されている
libpng 警告: アプリケーションは libpng でビルドされている-1.2.49 ですが、1.5.12 で実行されています
libpng 警告: libpng-1.2.49 でビルド
されたアプリケーションですが、1.5.12 で実行されています
libpng 警告: アプリケーションは libpng-1.2.49 でビルドされていますが、1.5.12 で実行されています
libpng 警告: アプリケーションは libpng-1.2.49 でビルドされていますが、1.5.12 で実行されています
付属コード
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <cv.h>
#include <highgui.h>
using namespace std;
using namespace cv;
IplImage* imgTracking=0;
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
CvCapture *cap; cap = cvCaptureFromCAM(1);
IplImage *frame; frame = cvQueryFrame(cap);
bool play = true;
while(frame && play){
cvWaitKey(10); IplImage *img = cvCloneImage(frame);
if (img->origin) {
cvFlip(img);
img->origin= 0;
}
QImage qimg;
qimg = IplImage2QImage(img);
//cvShowImage("Video", frame);
ui->labVideo->setPixmap(QPixmap::fromImage(qimg));
cvReleaseImage(&img);
frame = cvQueryFrame(cap);
}
cvReleaseCapture(&cap);
}
QImage MainWindow::IplImage2QImage(const IplImage *iplImage)
{
int height = iplImage->height;
int width = iplImage->width;
const uchar *qImageBuffer =(const uchar*)iplImage->imageData;
QImage img(qImageBuffer, width, height, QImage::Format_RGB888);
return img.rgbSwapped();
}