f429的ov5640 RGB565格式二值化程序分享,应该是首发!

2019-07-20 12:28发布

用了我三天的时间,终于把ov5640的二值化实现了。这几天在论坛吸取了很多知识,算法。现在该回报给论坛了。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
几楼卖鞋
1楼-- · 2019-07-21 05:50
[mw_shl_code=cpp,true]//处理数据
//当采集完一帧数据后,调用此函数.开始下一帧采集.
//该函数会被HAL_DCMI_FrameEventCallback调用
void jpeg_data_process(void)
{
        u16 i,j,l;
        l = 0;
        /*******显示二值化后的数据*******/
                for(j=0;j<Y;j++)
        {
                        for(i=0;i<X;i++)
                {
                        LCD_SetCursor(i,j);  
                        LCD_WriteRAM_Prepare();                //开始写入GRAM
                        FPS[l] = fps[l];
                       
                        LCD->LCD_RAM=Binary(FPS[l]);
//                        LCD->LCD_RAM=FPS[l];
                        l++;
                }
        }
                l = 0;
        /*******显示原来的数据*******/
                        for(j=0;j<Y;j++)
        {
                        for(i=0;i<X;i++)
                {
                        LCD_SetCursor(i+X+10,j);  
                        LCD_WriteRAM_Prepare();                //开始写入GRAM
                        FPS[l] = fps[l];
                       
        //                LCD->LCD_RAM=Binary(FPS[l]);
                        LCD->LCD_RAM=FPS[l];
                        l++;
                }
        }
}[/mw_shl_code]
几楼卖鞋
2楼-- · 2019-07-21 09:33
 精彩回答 2  元偷偷看……
几楼卖鞋
3楼-- · 2019-07-21 11:31
[mw_shl_code=cpp,true]int main(void)
{
        HAL_Init();                     //初始化HAL库   
        Stm32_Clock_Init(360,25,2,8);   //设置时钟,180Mhz
        delay_init(180);                //初始化延时函数
        uart_init(115200);              //初始化USART
        usart2_init(921600);            //初始化USART2
        usmart_dev.init(90);                     //初始化USMART       
        LED_Init();                     //初始化LED
        KEY_Init();                     //初始化按键
        SDRAM_Init();                   //初始化SDRAM
        LCD_Init();                     //初始化LCD
        TIM3_Init(10000-1,9000-1);      //10Khz计数,1秒钟中断一次
        POINT_COLOR=BLUE;//设置字体为红 {MOD}
        LCD_ShowString(30,50,200,16,16,"Apollo STM32F4/F7");       
        LCD_ShowString(30,70,200,16,16,"OV5640 TEST");       
        LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
        LCD_ShowString(30,110,200,16,16,"2016/1/16");
/*************这里初始化一些重要的引脚,SCL,SDA,RESET******************/       
        while(OV5640_Init())//初始化OV5640
        {
                LCD_ShowString(30,130,240,16,16,"OV5640 ERR");
                delay_ms(200);
            LCD_Fill(30,130,239,170,WHITE);
                delay_ms(200);
        LED0=!LED0;
        }       
    LCD_ShowString(30,130,200,16,16,"OV5640 OK");  
                rgb565_test();
}
[/mw_shl_code]
几楼卖鞋
4楼-- · 2019-07-21 15:38
 精彩回答 2  元偷偷看……
几楼卖鞋
5楼-- · 2019-07-21 15:46
 精彩回答 2  元偷偷看……
几楼卖鞋
6楼-- · 2019-07-21 21:29
几楼卖鞋 发表于 2017-8-19 10:00
[mw_shl_code=cpp,true]//处理数据
//当采集完一帧数据后,调用此函数.开始下一帧采集.
//该函数会被HAL_D ...


不过还是有点问题,8楼代码的意思是。在显示屏的左侧显示二值化后的图像,显示屏的右侧显示原始图像。结果的确有两个图像,但是这两个图像是不一样的。原始图像显示的图像会比二值化前的图像高,这让我百思不得其解。还请各位指教!

一周热门 更多>