天嵌 ARM开发社区

 找回密码
 注册
查看: 7247|回复: 17

OV9650拍照 QT上显示

[复制链接]
jsjs2002 发表于 2012-2-3 12:44:21 | 显示全部楼层 |阅读模式
还有三个问题没解决:
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[i*WIDTH+j]&0xf800)>>1)|((bmp_buf[i*WIDTH+j]&0x07c0)>>1)|((bmp_buf[i*WIDTH+j]&0x1f));
             }


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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 1 +10 收起 理由
zzwd + 10 很给力!

查看全部评分

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
应该是你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
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));
我用这个来翻转图像,结果图像是正了,但是整个图像花花绿绿根本没法看。版主帮下忙看看。:'(
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-5-4 20:14 , Processed in 1.062493 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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