Web Cam QThread Display One Frame Image and not Continuous Video
Hello to all, i need to develop an GUI window that capture video from web cam and display it to Qt main window but unfortunately it only display 1 frame image and not continuous video.
Code:
OpenCVQT
::OpenCVQT(QWidget *parent, Qt
::WFlags flags
)
{
ui.setupUi(this);
myLabel
= new QLabel("Fuckasdasd");
mainLayout->addWidget(myLabel);
mainWgt->setLayout(mainLayout);
this->setCentralWidget(mainWgt);
camMenu = menuBar()->addMenu(tr("Web Camera"));
webCamAct
= new QAction(tr
("Start Web Camera"),
this );
camMenu->addAction(webCamAct);
connect(webCamAct, SIGNAL(triggered()), this,
SLOT(WebCamSlot() ));
myCamThread = new cameraThread();
}
// =============================================
OpenCVQT::~OpenCVQT()
{
}
// =============================================
{
return myLabel;
}
void OpenCVQT::WebCamSlot()
{
myCamThread->run();
}
class cameraThread
: public QThread{
public:
cameraThread();
~cameraThread();
void run();
void StreamCamera();
void ConvertImage();
void CreateQImage();
private:
CvCapture* myCaptureHandler;
IplImage* myOriginalIplImage, *myRGBIplImage;
uchar* ImageData;
};
cameraThread::cameraThread()
: myCaptureHandler(),
myOriginalIplImage(&IplImage() ),
myRGBIplImage(&IplImage() ),
ImageData()
{
myCaptureHandler = cvCreateCameraCapture(0);
myOriginalIplImage = cvCreateImage(cvSize(320, 240),
IPL_DEPTH_8U, 3);
myRGBIplImage = cvCreateImage(cvSize(320,240),
IPL_DEPTH_8U, 3 );
}
// =============================================
cameraThread::~cameraThread()
{
}
// =============================================
void cameraThread::run()
{
StreamCamera();
exec();
}
// =============================================
void cameraThread::StreamCamera()
{
myOriginalIplImage = cvQueryFrame(myCaptureHandler);
ConvertImage();
CreateQImage();
//resize(myRGBIplImage->width, myRGBIplImage->height);
(OpenCVQT
::myLabel)->setPixmap
(QPixmap::fromImage(myQImage
) );
}
// =============================================
void cameraThread::ConvertImage()
{
cvCvtColor(myOriginalIplImage,
myRGBIplImage, CV_BGR2RGB);
if (!myRGBIplImage)
{
errMsg->showMessage("Error Convert Image");
}
else
{
ImageData = (uchar*) myRGBIplImage->imageData;
}
}
// =============================================
void cameraThread::CreateQImage()
{
myRGBIplImage->width, myRGBIplImage->height,
myRGBIplImage->widthStep,
}
Code:
void cameraThread::run()
{
StreamCamera();
exec();
}
I need the streamCamera() to be continuous running while main window is running too.
Please help.
Thanks.
Re: Web Cam QThread Display One Frame Image and not Continuous Video