野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 229|回复: 0

STM32F407和ov2640摄像头二值化图像数据处理

[复制链接]
发表于 5 天前 | 显示全部楼层 |阅读模式
通过DMA将图像数据传输至RGB_IMG_ADDRESS(0x68400000),然后每次传输一次帧图像对数据进行二值化,再将二值化后的数据直接复赋值到FSMC_LCD_ADDRESS去;二值化函数如下


请问这样思路对吗为什么得到的结果是黑屏
//二值化函数
void img_binarization(uint16_t THRESH)
{
          uint16_t i,j;
       
        for(i=0;i<img_height;i++)
        {       
                for(j=0;j<img_width;j+=4)
                {
                        tem=*(uint32_t *)(RGB_IMG_ADDRESS+(lcd_width*2*(lcd_height-i-1)+j));
                        n=((tem&0xffff0000)>>16);
                         m=tem&0x0000ffff;
                        if(rgbtogray(n)<THRESH&&rgbtogray(m)<THRESH)           //小于阈值则白
                                                {
                                                                                //*(uint32_t *)(FSMC_LCD_ADDRESS+(lcd_width*2*(lcd_height-w_line-1)+j))=0xffffffff;  //THRESH是阈值
                                                              *(uint32_t *)( FSMC_LCD_ADDRESS+(lcd_width*2*(lcd_height-i-1)+j))=0x00000000;
                                                }
                                                else if(rgbtogray(n)>=THRESH&&rgbtogray(m)>=THRESH)
                                                {
                                                                                //*(uint32_t *)(FSMC_LCD_ADDRESS+(lcd_width*2*(lcd_height-w_line-1)+j))=0xffffffff;
                                                       
                                                                                *(uint32_t *)(FSMC_LCD_ADDRESS+(lcd_width*2*(lcd_height-i-1)+j))=0xffffffff;
                                                }
                                                else if(rgbtogray(n)<THRESH&&rgbtogray(m)>=THRESH)
                                                {
                                                                                //*(uint32_t *)(FSMC_LCD_ADDRESS+(lcd_width*2*(lcd_height-w_line-1)+j))=0xffff0000;
                                                                                 *(uint32_t *)(FSMC_LCD_ADDRESS+(lcd_width*2*(lcd_height-i-1)+j))=0x0000ffff;
                                                }
                                                else
                                                {
                                                                                //*(uint32_t *)(FSMC_LCD_ADDRESS+(lcd_width*2*(lcd_height-w_line-1)+j))=0xffff0000;
                                                                                *(uint32_t *)(FSMC_LCD_ADDRESS+(lcd_width*2*(lcd_height-i-1)+j))=0xffff0000;
                                                }
                }
        }
        }

回复

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2025-3-31 05:04 , Processed in 0.131733 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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