OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3751|回复: 6

二值化处理函数放在帧中断,处理慢

[复制链接]

2

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
88
金钱
88
注册时间
2019-3-29
在线时间
27 小时
发表于 2019-7-21 10:19:49 | 显示全部楼层 |阅读模式
27金钱
stm32f429阿波罗,ov2640,采用rgb565模式
二值化程序放在帧中断里面,处理慢,放在主函数里面,缩小显示尺寸也是慢。
请教大佬指导,二值化程序放在哪里
程序源码链接:https://pan.baidu.com/s/1W4lUIVmKIhfRJ7ggLRb2cg 提取码:adrn
视频在附件里,悬赏新手全部积分,以表诚意
/*
函数:灰度化且二值化函数
形参:采集的像素点数据
返回值类型:u16
返回值:二值化后的值
*/
u16 Binary(void)
{
        u16 x,y,pixel;
        static u16 Gray;
        DCMI_Stop();
        for(x=0;x<400;x++)
        {
                for(y=0;y<400;y++)
                {
                        pixel=LCD_ReadPoint(x,y);
                        R=(pixel&RGB_R)>>11;//提取R,G,B值
                        G=(pixel&RGB_G)>>5;
                        B=(pixel&RGB_B);
                        Gray=(u16)((R*634+G*613+B*232));//灰度值计算12位
                        if(Gray<threshold)
                                LCD_Fill(x,y,x,y,BLACK);
                        else if(Gray>=threshold)
                                LCD_Fill(x,y,x,y,WHITE);
                }
        }                       
        LCD_SetCursor(0,0);
        LCD_WriteRAM_Prepare();                //开始写入GRAM
        DCMI_Start();
}


主函数while循环
while(1)
        {       
                key=KEY_Scan(0);//不支持连按
                if((key)&&(key!=KEY2_PRES))
                {
                        if(key==WKUP_PRES)//缩放处理
                        {
                                scale=!scale;  
                                if(scale==0)
                                {
                                        OV2640_ImageWin_Set((1600-lcddev.width)/2,(1200-outputheight)/2,lcddev.width,outputheight);//1:1真实尺寸
                                        //sprintf((char*)msgbuf,"Full Size 1:1");
                                }
                                else
                                {
                    OV2640_ImageWin_Set(0,0,1600,1200);//全尺寸缩放
                                        //sprintf((char*)msgbuf,"Scale");
                                }
                                OV2640_OutSize_Set(lcddev.width,outputheight);
                        }                          
                        DCMI_Start();//开始显示  
                }
                Binary();
        }



图片.JPG

二值化处理慢.rar

15.41 MB, 下载次数: 30

最佳答案

查看完整内容[请看2#楼]

建议数据处理完,先缓存到内部SRAM,然后再一次性写入LCD,这样会快很多。你的LCD_Fill函数,很耗时间的。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165508
金钱
165508
注册时间
2010-12-1
在线时间
2115 小时
发表于 2019-7-21 10:19:50 | 显示全部楼层
建议数据处理完,先缓存到内部SRAM,然后再一次性写入LCD,这样会快很多。你的LCD_Fill函数,很耗时间的。
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2019-5-5
在线时间
7 小时
发表于 2019-7-21 11:20:36 | 显示全部楼层
帮顶一下 ,最近也在学习2640
回复

使用道具 举报

1

主题

41

帖子

0

精华

高级会员

Rank: 4

积分
504
金钱
504
注册时间
2019-3-21
在线时间
103 小时
发表于 2019-7-21 13:04:26 | 显示全部楼层
这个最大多少帧啊
回复

使用道具 举报

2

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
88
金钱
88
注册时间
2019-3-29
在线时间
27 小时
 楼主| 发表于 2019-7-21 15:03:11 | 显示全部楼层
WYW6 发表于 2019-7-21 13:04
这个最大多少帧啊

不到10hz
帧中断.JPG
回复

使用道具 举报

21

主题

138

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2019-6-1
在线时间
52 小时
发表于 2019-8-1 21:17:04 | 显示全部楼层
帮顶,小组最近也在搞图像
回复

使用道具 举报

2

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
88
金钱
88
注册时间
2019-3-29
在线时间
27 小时
 楼主| 发表于 2019-8-2 09:07:07 | 显示全部楼层
正点原子 发表于 2019-7-21 10:19
建议数据处理完,先缓存到内部SRAM,然后再一次性写入LCD,这样会快很多。你的LCD_Fill函数,很耗时间的。

好的,谢谢
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-15 17:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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