4133|8

66

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

求助:WINCE S3C2440 30万像素摄像头显示出现多张相同的画面平铺是为什么? [复制链接]

具体情况:我用的LCD为800*600的屏,开发板为S3C2440,摄像头驱动原先为130万像素,现在我想弄成30万像素,改可驱动,结果显示在LCD上的画面是多张相同的画面平铺,就是类似于电脑桌面,原先拉伸的图片变为平铺??请问这是怎么回事??我在注册表中已经把分辨率 设置为800*600了,怎么还是出现上面的情况?我想 是不是因为30万像素的摄像头的分辨率不够,所以造成图象只能平铺??我是新人  不懂  请教了

最新回复

改了后,有效果了 ~原先是5张平铺的~现在可以了~呵呵~谢谢你们~学了很多~  详情 回复 发表于 2009-11-21 18:37
点赞 关注

回复
举报

76

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
楼主这个现象我曾经也碰到过,说来给楼主参考下,
以前的屏的分辨率是480*272,显示正常,当换了哥屏,分辨率该为800*480后就出现楼主描述的现象了,在我的板子上出现这个问题的原因是在Camera的驱动问题,我的Camera的驱动中,显示图像的时候,是把摄像头采集到的数据经过转换后,形成RGB16的数据,然后把这个数据拷贝到屏的显示内存,这样来显示图像的,所以在小屏的时候显示正常的驱动,在换了大屏时就不正常了,原因是显存的布局不一样了,把同样的显示信息拷贝到大屏的显存就会出问题,解决的方法,是修改驱动中这里的拷贝方式,
希望对楼主有所帮助
 
 

回复

49

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
楼上说得很有道理,摄像头的驱动要做相应调整
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

4
 
先谢谢楼上两位前辈,我按照你们说的去改下~~有结果再回来结帖~谢谢了~没有分数给,不好意思~
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

5
 
应该是你的CAMERA做了平铺的显示,显存(显示什么)是无辜的只是被你的驱动随便操作了.
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

6
 
有可能是你将CMOS SENSOR的输出改成了30万像素,也就是640*480,但LCD的显示buffer是按你设定的800*600大小进行的,所以复制显示数据的时候每一行需要将多余的点空出来,上面lailzhihou的说法是对的
 
 
 

回复

90

帖子

0

TA的资源

一粒金砂(初级)

7
 
#if 1
SetKMode(TRUE);
      for(y=0;y<640;y++)
              {
                for (x=0; x<480; x++) // YCbCr 4:2:0 format
        {
                *(U16*)((U8*)(IMAGE_FRAMEBUFFER_UA_BASE+y*2+640*(479-x)*2))=*(U16*)((U8*)

(buffer_rgb+y*480*2+x*2));
                //memcpy((U8 *)(FRAMEBUF_BASE + (y*2)+240*(319-x)*2),(U8 *)(buffer_rgb+y*320*2+x*2),2);
        }
              }
SetKMode(FALSE);

#endif  拷贝内存数据是指这里吗?如果我把        s2440CAM->CIPRTAREA= PrDstWidth*PrDstHeight;

        // LJY, added 040615       
        // initialization for buffer addresses
        y_address = s2440CAM->CICOYSA1;
        cb_address = s2440CAM->CICOCBSA1;
        cr_address = s2440CAM->CICOCRSA1;
        rgb_address = s2440CAM->CIPRCLRSA1;
}中 PrDstWidth的值加大有用吗?因为我显示的时候是有5张图片平铺,高度是对的~宽度是5倍~呵呵~基础不好~实在不好 意思i
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

8
 
void Display_Cam_Image(U32 pos_x, U32 pos_y, U32 size_x, U32 size_y, U8 port)
函数中有一段直接在LCD上显示的语句:#if 1
SetKMode(TRUE);
        for (y=0; y         {
                //memcpy((void *)(FRAMEBUF_BASE+0x5e00+y*240*2),(void *)buffer_rgb,(QCIF_XSIZE)*2);
                memcpy((void *)(IMAGE_FRAMEBUFFER_UA_BASE+ (PREVIEW_X*pos_y + pos_x) + y*PREVIEW_X*2),(void

*)buffer_rgb,(PREVIEW_X)*2);
                buffer_rgb += (PREVIEW_X*2);
//                RETAILMSG(1,(TEXT("\r\nPREVIEW_X=%d,PREVIEW_Y=%d\r\n"),PREVIEW_X,PREVIEW_Y));
        }
SetKMode(FALSE); 然后打印出信息~~我想 你们所说的把多余的点空出来是指,我读到满30W像素的分辨率后,输出全部为空?    我还想问下void Display_Cam_Image2()有什么作用~我看了下好像也是读内存信息吧~那不是和void Display_Cam_Image冲突?   我实在笨的要死
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

9
 
改了后,有效果了 ~原先是5张平铺的~现在可以了~呵呵~谢谢你们~学了很多~
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表