智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 8492|回复: 16
打印 上一主题 下一主题

如何在OLED上显示摄像头采集的图像?

  [复制链接]

8

主题

111

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1153
威望
579
贡献
358
兑换币
381
注册时间
2014-11-22
在线时间
108 小时
毕业学校
河南理工大学万方科技学院
跳转到指定楼层
1#
发表于 2015-1-20 12:38:45 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
求帮助
回复

使用道具 举报

15

主题

197

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
5465
QQ
威望
2569
贡献
1554
兑换币
1702
注册时间
2013-4-6
在线时间
671 小时
推荐
发表于 2015-1-20 13:42:16 | 只看该作者
这是我当时将二值化之后的图像显示到12864OLED上的程序,仅供参考,采集的图像是160*60的,先压缩成80*60的,也就是将相邻的两个像素合并成一个像素
        u8 tempimg[60][80];
        for(i=0; i<=59; i++)
            for(j=0; j<=79; j++)
            {
                tempimg[i][j] = image_bin[i][j*2] || image_bin[i][j*2+1];//通过或运算合并像素
            }
      //开始往OLED上显示,一次写8个像素,从上到下
        for(i=0; i<=6; i++)//7次循环完成56*80的图像区
        {
            LCD_Set_Pos(0,i);
            for(j=0; j<80; j++)//一次循环完成一个8*60的图像去
            {
                u8 x = tempimg[i*8][j]
                    +tempimg[i*8+1][j]*2
                        +tempimg[i*8+2][j]*4
                            +tempimg[i*8+3][j]*8
                                +tempimg[i*8+4][j]*16
                                    +tempimg[i*8+5][j]*32
                                        +tempimg[i*8+6][j]*64
                                            +tempimg[i*8+7][j]*128;//将竖着的8个像素合并成一个字节
                LCD_WrDat(x);
            }
        }
        //上面的一段程序完成了56行像素的显示,同理,下面显示剩下4行
        LCD_Set_Pos(0,7);
        for(j=0; j<80; j++)
        {
            u8 x = tempimg[56][j]
                +tempimg[57][j]*2
                    +tempimg[58][j]*4
                        +tempimg[59][j]*8;
            LCD_WrDat(x);
        }
void LCD_WrDat(byte data)
{
    byte i=8;
    //LCD_CS=0;;
    GPIOB_PDOR |=  GPIO_PDOR_PDO(GPIO_PIN(21));;;;
    asm("nop");
    GPIOB_PDOR &= ~GPIO_PDOR_PDO(GPIO_PIN(18));;;;
    asm("nop");   
    while(i--)
    {
        if(data&0x80){GPIOB_PDOR |=  GPIO_PDOR_PDO(GPIO_PIN(19));;;;}
        else{GPIOB_PDOR &= ~GPIO_PDOR_PDO(GPIO_PIN(19));;;;}
        GPIOB_PDOR |=  GPIO_PDOR_PDO(GPIO_PIN(18));
        asm("nop");;;;
        //asm("nop");            
        GPIOB_PDOR &= ~GPIO_PDOR_PDO(GPIO_PIN(18));;;;;   
        data<<=1;   
    }
    //LCD_CS=1;
}
这段程序耗时还是蛮长的,仅供参考
回复 支持 2 反对 0

使用道具 举报

1

主题

27

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
372
QQ
威望
159
贡献
133
兑换币
104
注册时间
2016-6-25
在线时间
40 小时
毕业学校
浙江大学
17#
发表于 2016-7-20 14:50:28 | 只看该作者
还是不太懂
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

注册会员

Rank: 2

积分
75
威望
51
贡献
14
兑换币
21
注册时间
2016-5-5
在线时间
5 小时
毕业学校
成都工业学院
16#
发表于 2016-6-21 18:40:05 | 只看该作者
xuanwozhe 发表于 2015-1-20 13:42
这是我当时将二值化之后的图像显示到12864OLED上的程序,仅供参考,采集的图像是160*60的,先压缩成80*60的 ...

为什么我第一行显示正常  下面几行就一直在闪呢?
回复 支持 反对

使用道具 举报

17

主题

74

帖子

0

精华

高级会员

Rank: 4

积分
821
QQ
威望
460
贡献
241
兑换币
193
注册时间
2014-6-24
在线时间
60 小时
毕业学校
陇东学院
15#
发表于 2015-12-22 14:38:25 | 只看该作者
xuanwozhe 发表于 2015-1-20 13:42
这是我当时将二值化之后的图像显示到12864OLED上的程序,仅供参考,采集的图像是160*60的,先压缩成80*60的 ...

显示花屏咋解决啊
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
299
QQ
威望
153
贡献
98
兑换币
99
注册时间
2015-5-6
在线时间
24 小时
毕业学校
济南大学
14#
发表于 2015-6-16 02:03:45 | 只看该作者
xuanwozhe 发表于 2015-1-20 13:42
这是我当时将二值化之后的图像显示到12864OLED上的程序,仅供参考,采集的图像是160*60的,先压缩成80*60的 ...

求全程序,谢谢!w_d_jian@sina.com
回复 支持 反对

使用道具 举报

8

主题

111

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1153
威望
579
贡献
358
兑换币
381
注册时间
2014-11-22
在线时间
108 小时
毕业学校
河南理工大学万方科技学院
13#
 楼主| 发表于 2015-5-30 10:42:52 | 只看该作者
李健明 发表于 2015-5-28 20:00
搞定了没?给我借鉴一下

没做,就拿他显示了一些参数
回复 支持 反对

使用道具 举报

1

主题

4

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
334
威望
158
贡献
92
兑换币
80
注册时间
2014-11-7
在线时间
42 小时
毕业学校
南昌工程学院
12#
发表于 2015-5-28 20:00:50 | 只看该作者
搞定了没?给我借鉴一下
回复 支持 反对

使用道具 举报

6

主题

227

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4239
威望
1991
贡献
1328
兑换币
1288
注册时间
2013-1-12
在线时间
460 小时
11#
发表于 2015-3-11 18:59:13 | 只看该作者
xuanwozhe 发表于 2015-1-20 13:42
这是我当时将二值化之后的图像显示到12864OLED上的程序,仅供参考,采集的图像是160*60的,先压缩成80*60的 ...

那么多乘啊除的,你就移位嘛
回复 支持 反对

使用道具 举报

2

主题

27

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1055
威望
517
贡献
282
兑换币
284
注册时间
2014-7-16
在线时间
128 小时
毕业学校
桂电
10#
发表于 2015-3-11 18:25:42 | 只看该作者
小边BRC 发表于 2015-1-20 15:25
多谢呀

调出来了吗,我调了一天都不行,能不能发我一份188123134@qq.com
回复 支持 反对

使用道具 举报

0

主题

13

帖子

0

精华

注册会员

Rank: 2

积分
145
威望
65
贡献
58
兑换币
42
注册时间
2015-1-20
在线时间
11 小时
毕业学校
重庆大学
9#
发表于 2015-1-28 10:54:34 | 只看该作者
采回的图像是不能直接显示的,你只要将解压的图像用一个转置算法换算成OLED所需要的16进制的数组就可以啦
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-26 14:36 , Processed in 0.117948 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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