标题:求助显示视频数据时屏幕闪烁的问题
作者:dongmingyi
日期:2006-09-11 18:27
内容:
在网上找到了一段视频显示的代码,如下:
class PictureDisplay : public QWidget // picture display widget
{
public:
PictureDisplay(QWidget* parent, const char* name=0, int f=0);
~PictureDisplay();
protected:
void paintEvent( QPaintEvent * );
public :
QPixmap pixmap;
private:
};
PictureDisplay::PictureDisplay(QWidget* parent, const char* name, int f):QWidget(parent, name, f)
{
;
}
PictureDisplay::~PictureDisplay()
{
;
}
void PictureDisplay::paintEvent( QPaintEvent * )
{
QPainter paint( this ); // paint widget
m.lock();
paint.drawPixmap( 0, 0, pixmap );
m.unlock();
}
void foo(IplImage *ipl_img ,QImage *q)
{
int x;
int y;
char *data = ipl_img->imageData;
for( y = 0; y < ipl_img->height; y++, data += ipl_img->widthStep )
for( x = 0; x < ipl_img->width; x++ )
{
uint *p = (uint*)q->scanLine(y) + x;
*p = qRgb(data,data,data);
}
}
class Capturer : public QThread
{
public:
Capturer(int camnr);
~Capturer();
virtual void run();
PictureDisplay *p;
IplImage *i;
CCamera c;
QImage *q;
};
Capturer :: Capturer(int camnr)
{
c.connect(camnr);
CvSize sz = cvSize(320,240);
c.setSize(sz);
i = cvCreateImage(sz,8,3);
q = new QImage();
q->create(320,240,32);
}
Capturer :: ~Capturer()
{
c.disconnect();
delete(q);
}
void Capturer ::run()
{
while(true)
{
c.capture(i);
foo(i,q);
m.lock();
p->pixmap.convertFromImage(*q);
m.unlock();
&n ..
#1 [dongmingyi 09-11 20:21]
谢谢各位,问题基本上解决了
#2 [shiroki 09-13 12:19]
怎么解决的亚,是加了doublebuffer吗
#3 [keerbin 04-02 08:49]
dongmingyi ,素质太差,只会求助,问题自己解决了,都不共享一下解决办法,
这种人,太自私