6
回答
windows下QT读取摄像头已经成功,但是内存消耗很大
【腾讯云】学生服务器套餐10元/月 >>>   
IplImage *pFrame;
 CvCapture* pCapture;
 pFrame = NULL;
 pCapture = cvCreateCameraCapture(-1);
 while(1)
 {
 
 pFrame=cvQueryFrame(pCapture);
 if(!pFrame)
 break;
 cvShowImage("video",pFrame);
 char c=cvWaitKey(33);
 if(c==27)break;
 }
 cvReleaseImage(&pFrame);
 cvReleaseCapture(&pCapture);
以上是参考代码,以下是自己想办法
 
void
Widget ::paintEvent ( QPaintEvent *)
{
 
 pFrame=cvQueryFrame(pCapture);
 IplImage *dst = 0; //目标图像指针
 //float scale = 0.5; //缩放倍数为0.618倍
 CvSize dst_cvsize; //目标图像尺寸
 dst_cvsize.width = (pFrame->width)/2; //目标图像的宽为源图象宽的scale
 dst_cvsize.height = (pFrame->height)/2; //目标图像的高为源图象高的scale倍
 dst = cvCreateImage( dst_cvsize, pFrame->depth, pFrame->nChannels); //构造目标图象
 cvResize(pFrame, dst, CV_INTER_LINEAR); //缩放源图像到目标图像
 QImage *image;
 cvCvtColor(dst,dst,CV_BGR2RGB);
 uchar *imgData=(uchar *)dst->imageData;
 image=new QImage(imgData,dst->width,dst->height,QImage::Format_RGB888);
 ui->label_8->setPixmap(QPixmap::fromImage(*image));
 delete image;
 
} 
在这个事件里面写的,运行下,视频可以读出来,但是内存消耗很大,每秒差不多1000K左右,怎么解决呢?
我打算开个线程,run里面直接while循环这样好吗?
Qt
举报
DavidWong8383
发帖于5年前 6回/1K+阅
顶部