天嵌 ARM开发社区

 找回密码
 注册
查看: 3580|回复: 2

QLabel图像显示出现闪屏问题

[复制链接]
Kira 发表于 2012-6-19 10:56:33 | 显示全部楼层 |阅读模式
最近在做saa7113多通道视频拼接实验,一路磕磕碰碰出现各种问题,加上Qt又是新手,诸多问题不知道怎样解决,再次请教各位,希望能够提供一点思路
问题:我现在提取saa7113 4个通道的图像之后进行拼接(类似监控系统那样的画面拼接),然后再将图像贴到QLabel上显示,照说问题不会太难,但是总是出现闪屏,画面很混乱。网上查到的结果提示可能使用双缓冲区可以闪屏问题,但是Qt4每个显示控件都是具有双缓冲区的!早上试着利用双缓冲区看看能不能解决问题,结果画面没有任何显示,现在更加头疼了。我想问题应该就是出现窗体刷新和图像缓冲区上,但我不知道怎样解决!!
希望有人能指点一二,代码如下:
  1. //定时器读取图像数据
  2. void TQCamera::GetImage()
  3. {
  4.     switch(switchc)
  5.     {
  6.     case 0:
  7.         if(!(g_pCamera->GetBuffer(pp_buf)))
  8.             printf("GetBuffer Error: left_buf");
  9.         break;
  10.     case 1:
  11.         if(!(g_pCamera->GetBuffer(pp_buf)))
  12.             printf("GetBuffer Error: right_buf");
  13.         break;
  14.     case 2:
  15.         if(!(g_pCamera->GetBuffer(pp_buf)))
  16.             printf("GetBuffer Error: front_buf");
  17.         break;
  18.     case 3:
  19.         if(!(g_pCamera->GetBuffer(pp_buf)))
  20.             printf("GetBuffer Error: back_buf");
  21.         break;
  22.     default: break;
  23.     }
  24.    if((switchc++)==4)
  25.     {
  26.        ready=1;
  27. //       m_pTimer2->stop();
  28.        switchc=0;
  29.        memcpy(preview_buf, share_buf, sizeof(share_buf)); //  复制内存图像到预览缓冲区上
  30.    }
  31.    g_pCamera->JointImages2(pp_buf,share_buf,switchc);
  32.    g_pCamera->ChannelSet(switchc);
  33. }
  34. //定时器刷新图像
  35. void TQCamera::RefreshImage()
  36. {

  37.         if(ready==1)
  38.         {
  39.             QImage image;
  40.             format=QImage::Format_RGB16;
  41. //          g_pCamera->JointImages(left_buf,right_buf,front_buf,back_buf,pp_buf,0);
  42.             image = QImage((uchar *) preview_buf, g_iWidth, g_iHeight, format);  //QImage::Format_RGB16;
  43.             pixmap = pixmap.fromImage(image);
  44.             m_plbImage->setPixmap(pixmap);
  45. //            m_plbImage->setBackgroundRole(QPalette::NoRole);
  46.             m_plbImage->setFixedSize(g_iWidth, g_iHeight);
  47.             ready=0;
  48.         }

  49. }
复制代码
注:如果将预览缓冲区 preview_buf换成共享缓冲区share_buf就会出现闪屏,如果不换就没有图像显示
 楼主| Kira 发表于 2012-6-19 10:57:13 | 显示全部楼层
例牌,自己先顶:):)
 楼主| Kira 发表于 2012-6-19 16:49:47 | 显示全部楼层
又是自己解决的问题:闪屏的原因初步确定是saa7113转换的速度太慢了,一秒才20多帧。如果是一路摄像头信号还好说,当记录同时过来的时候,缺点就出现了。转换的速度决定了不能够取数据太快,否则,就会读到相互交错的图像数据出来,这样就悲剧了!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2024-9-28 15:27 , Processed in 1.044962 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表