jsjs2002 发表于 2012-2-3 12:44:21

OV9650拍照 QT上显示

还有三个问题没解决:
1.抓到的图片是正的,但是在QT和LCD上显示却是倒过来的。
2.还有就是关于函数参数的传递。
unsigned short *bmp_buf;
bmp_buf=(unsigned short *)malloc(2*size);
memcpy(bmp_buf,preview_buf,2*size);
rgb565_bmp(&bmp_buf);
void rgb565_bmp(unsigned chort **buf)
{

   int i,j;
      for(i=0;i<HEIGHT;i++)
      for(j=0;j<WIDTH;j++)
            {

                *(*buf+i*WIDTH+j)=((*(*bufi+WIDTH+j)&0xf800)>>1)|((*(*bufi+WIDTH+j)&0x07c0)>>1)|((*(*buf+i*WIDTH+j)&0x1f));
             }


}
原版是建立了两个全局数组,现在想把这个函数写成有函数参数传递。(PS:上面的函数不一定是对的)

原版:void rgb565_bmp()
{

   int i,j;
   memcpy(bmp_buf,preview_buf,2*size);
   for(i=0;i<HEIGHT;i++)
      for(j=0;j<WIDTH;j++)
            {

                *(bmp+i*WIDTH+j)=((bmp_buf&0xf800)>>1)|((bmp_buf&0x07c0)>>1)|((bmp_buf&0x1f));
             }


}有没有哪位能解决上面两个问题啊

change-live 发表于 2012-2-3 14:20:43

本帖最后由 change-live 于 2012-2-3 14:28 编辑

你确定保存成bmp图后是正的?
我用天嵌那个jpeg的库 保存是反的郁闷

用rgb565构造QImage 然后setPixmap 显示出来是正的

jsjs2002 发表于 2012-2-3 16:05:58

采集的RGB数据是正是反我不清楚,感觉应该是反的。做成的BMP的确是正的。但是QT上显示确又是反的。。我晕

jsjs2002 发表于 2012-2-3 16:07:55

哪位大虾指点下啊,到底是正是反????

TQ-lkp 发表于 2012-2-3 19:30:40

rgb数据直接显示在QT界面上,是正的说明图像就是正的

jsjs2002 发表于 2012-2-4 20:40:03

额,QT上直接显示和在LCD上显示都是反过来的,做成BMP图片却变成正的了。。。这是怎么回事呢??

TQ-lkp 发表于 2012-2-4 20:53:16

应该是你rgb565_bmp转换的时候出的问题

jsjs2002 发表于 2012-2-4 22:55:10

TQ-lkp 发表于 2012-2-4 20:53 static/image/common/back.gif
应该是你rgb565_bmp转换的时候出的问题

呵呵 我是把采集到RGB565的数据直接在QT上显示,而且在LCD上显示也是反的。这怎么解决呢??

TQ-lkp 发表于 2012-2-5 01:18:09

在驱动中做一次图像翻转就行了

jsjs2002 发表于 2012-2-5 11:12:35

明白了啊,我还在想是不是在QT上显示的时候直接用BMP的图片呢,谢谢版主了。:lol

TQ-lkp 发表于 2012-2-5 13:54:04

不用 bmp,采集到的rgb数据可以直接显示的

change-live 发表于 2012-2-5 20:42:22

image = QImage((uchar *) preview_buf, Width,Height, QImage::Format_RGB16);
QPixmap pixmap;
pixmap = pixmap.fromImage(image);
QLabel->setPixmap(pixmap);

我显示的是正的

jsjs2002 发表于 2012-2-8 12:39:19

change-live 发表于 2012-2-5 20:42 static/image/common/back.gif
image = QImage((uchar *) preview_buf, Width,Height, QImage::Format_RGB16);
QPixmap pixmap;
pixmap...

可是我显示是反的,和用测试程序在LCD上显示一样。

亚瑟王 发表于 2012-2-8 16:23:10

亲,
要么在应用程中旋转一下图像,要么修改一下camera驱动的这个寄存器:CICOTRGFMT的14和15两位,然后实现硬件旋转图像的功能。这两位具体值请根据2440的芯片手册和实际值来确定。

jsjs2002 发表于 2012-2-8 16:26:09

unsigned char *preview_buf;
unsigned char *bbuf;
memcpy(bbuf,preview_buf,2*size);
   for(i=0;i<HEIGHT;i++)
      for(j=0;j<WIDTH*2;j++)
      {
                *(bbuf+i*2*WIDTH+j)=*(preview_buf+(HEIGHT-1-i)*2*WIDTH+(2*WIDTH-1-j));

      }

    image=new QImage((unsigned char *)(bbuf),480,272,QImage::Format_RGB16);
    image->loadFromData((unsigned char *)(bbuf),size*2);
    ui->window->setPixmap(QPixmap::fromImage(*image,Qt::AutoColor));
我用这个来翻转图像,结果图像是正了,但是整个图像花花绿绿根本没法看。版主帮下忙看看。:'(
页: [1] 2
查看完整版本: OV9650拍照 QT上显示