久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6657|回復: 8
打印 上一主題 下一主題
收起左側

stm32f407驅動OV2640二值化(成功版源碼下載)

  [復制鏈接]
跳轉到指定樓層
樓主
ID:291666 發表于 2018-3-30 17:01 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
stm32f4驅動ov2640圖像處理

stm32單片機源程序如下:
  1. #include "sys.h"
  2. #include "delay.h"
  3. #include "usart.h"
  4. #include "led.h"
  5. #include "key.h"
  6. #include "lcd.h"
  7. #include "ltdc.h"
  8. #include "sdram.h"
  9. #include "pcf8574.h"
  10. #include "timer.h"
  11. #include "ov5640.h"
  12. #include "usart2.h"
  13. #include "dcmi.h"
  14. #include "usmart.h"
  15. //分辨率 x,y
  16. #define X 160
  17. #define Y 120
  18. #define buf_size X*Y
  19. //提取R、G、B的參數
  20. #define RGB_R 0XF800
  21. #define RGB_G 0X07E0
  22. #define RGB_B 0X001F
  23. //fps、FPS數組存入采集回來的信息
  24. u32 fps[buf_size];
  25. u16 FPS[buf_size];
  26. //變量R,G,B
  27. u16 R,G,B;
  28. u16 threshold=32767;//閾值

  29. /*************
  30. 函數:灰度化且二值化函數
  31. 返回值類型:u16
  32. 返回值:二值化后的值
  33. 形參:采集的像素點數據
  34. *************/
  35. u16 Binary(u16 pixel)
  36. {
  37.         static u16 Gray;
  38.         /*******提取R,G,B值*******/
  39.         R = (pixel&RGB_R)>>11;
  40.         G = (pixel&RGB_G)>>5;
  41.         B = (pixel&RGB_B);
  42.         /*******灰度值計算*******/
  43.         /*******網絡上大部分的公式是針對8位的*******/
  44.         /*******這條公式是針對12位的******/
  45.         Gray = (u16)((R*634+G*613+B*232));
  46.         /*******二值化*******/
  47.         if(Gray<threshold)
  48.                 Gray = BLACK;
  49.         else if(Gray>=threshold)
  50.                 Gray = WHITE;
  51.         return Gray;
  52. }
  53. //處理數據
  54. //當采集完一幀數據后,調用此函數.開始下一幀采集.
  55. //該函數會被HAL_DCMI_FrameEventCallback調用
  56. void jpeg_data_process(void)
  57. {
  58.         u16 i,j,l;
  59.         l = 0;
  60.         /*******顯示二值化后的數據*******/
  61.                 for(j=0;j<Y;j++)
  62.         {
  63.                         for(i=0;i<X;i++)
  64.                 {
  65.                         LCD_SetCursor(i,j);  
  66.                         LCD_WriteRAM_Prepare();                //開始寫入GRAM
  67.                         FPS[l] = fps[l];
  68.                         
  69.                         LCD->LCD_RAM=Binary(FPS[l]);
  70. //                        LCD->LCD_RAM=FPS[l];
  71.                         l++;
  72.                 }
  73.         }
  74.                 l = 0;
  75.         /*******顯示原來的數據*******/
  76.                         for(j=0;j<Y;j++)
  77.         {
  78.                         for(i=0;i<X;i++)
  79.                 {
  80.                         LCD_SetCursor(i+X+10,j);  
  81.                         LCD_WriteRAM_Prepare();                //開始寫入GRAM
  82.                         FPS[l] = fps[l];
  83.                         
  84.         //                LCD->LCD_RAM=Binary(FPS[l]);
  85.                         LCD->LCD_RAM=FPS[l];
  86.                         l++;
  87.                 }
  88.         }
  89. }


  90. //RGB565測試
  91. //RGB數據直接顯示在LCD上面
  92. void rgb565_test(void)
  93. {
  94.         u8 key;
  95.         u8 k;
  96.         u16 outputheight=0;        
  97.         LCD_Clear(WHITE);
  98.     POINT_COLOR=RED;
  99.         //自動對焦初始化
  100.         OV5640_RGB565_Mode();        //RGB565模式
  101.         OV5640_Focus_Init();
  102.         
  103.         OV5640_Light_Mode(0);        //自動模式
  104.         OV5640_Color_Saturation(3);//色彩飽和度0
  105.         OV5640_Brightness(4);        //亮度0
  106.         OV5640_Contrast(3);                //對比度0
  107.         OV5640_Sharpness(33);        //自動銳度
  108.         //OV5640_Focus_Constant();//啟動持續對焦
  109. /*************這里初始化PCLK、VSYNC、HSYNC和數據口******************/
  110.         DCMI_Init();                        //DCMI配置

  111.   DCMI_DMA_Init((u32)fps,0,buf_size,DMA_MDATAALIGN_HALFWORD,DMA_MINC_ENABLE);
  112.         TIM3->CR1&=~(0x01);                //關閉定時器3,關閉幀率統計,打開的話,RGB屏,在串口打印的時候,會抖

  113.   outputheight=lcddev.height;
  114.         OV5640_OutSize_Set(0,0,X*2,Y*2);                //滿屏縮放顯示
  115.         LCD_Clear(BLACK);
  116.         delay_ms(100);
  117.         LCD_SetCursor(0,0);
  118.         DCMI_Start();                         //啟動傳輸
  119.         while(1)
  120.         {
  121.                 key=KEY_Scan(0);
  122.                 if(key==KEY0_PRES)
  123.                         OV5640_Focus_Single();
  124.                 else if(key==KEY1_PRES)
  125.                 {
  126.                         k++;
  127.                         if(k%2==1)
  128.                                 OV5640_Flash_Ctrl(1);//打開閃光燈
  129.                         else
  130.                            OV5640_Flash_Ctrl(0);//關閉閃光燈
  131.                 }
  132.         }   
  133. }
  134. int main(void)
  135. {
  136.         HAL_Init();                     //初始化HAL庫   
  137.         Stm32_Clock_Init(360,25,2,8);   //設置時鐘,180Mhz
  138.         delay_init(180);                //初始化延時函數
  139.         uart_init(115200);              //初始化USART
  140.         usart2_init(921600);            //初始化USART2
  141.         usmart_dev.init(90);                     //初始化USMART        
  142.         LED_Init();                     //初始化LED
  143.         KEY_Init();                     //初始化按鍵
  144.         SDRAM_Init();                   //初始化SDRAM
  145.         LCD_Init();                     //初始化LCD
  146.         TIM3_Init(10000-1,9000-1);      //10Khz計數,1秒鐘中斷一次
  147.          POINT_COLOR=BLUE;//設置字體為紅色
  148.         LCD_ShowString(30,50,200,16,16,"Apollo STM32F4/F7");        
  149.         LCD_ShowString(30,70,200,16,16,"OV5640 TEST");        
  150.         LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
  151.         LCD_ShowString(30,110,200,16,16,"2016/1/16");
  152. /*************這里初始化一些重要的引腳,SCL,SDA,RESET******************/        
  153.         while(OV5640_Init())//初始化OV5640
  154.         {
  155.                 LCD_ShowString(30,130,240,16,16,"OV5640 ERR");
  156.                 delay_ms(200);
  157.             LCD_Fill(30,130,239,170,WHITE);
  158.                 delay_ms(200);
  159.         LED0=!LED0;
  160.         }        
  161.     LCD_ShowString(30,130,200,16,16,"OV5640 OK");  
  162.                 rgb565_test();
  163. }
復制代碼

下載:
二值化5-成功.rar (1.03 MB, 下載次數: 172)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:303201 發表于 2018-4-7 16:13 | 只看該作者
學習下
回復

使用道具 舉報

板凳
ID:225110 發表于 2018-6-17 13:33 | 只看該作者
這是5640不是2640

評分

參與人數 1黑幣 +60 收起 理由
admin + 60 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

地板
ID:366261 發表于 2018-9-14 19:46 | 只看該作者
請問攝像頭用的是OV5640還是OV2640?
回復

使用道具 舉報

5#
ID:552697 發表于 2019-7-13 17:05 | 只看該作者
正在搞。學習下
回復

使用道具 舉報

6#
ID:408804 發表于 2019-7-26 14:35 | 只看該作者
頂,前來學習。
回復

使用道具 舉報

7#
ID:608557 發表于 2019-9-6 18:04 | 只看該作者
阿波羅F429驅動OV5640,別被p積分了
回復

使用道具 舉報

8#
ID:410541 發表于 2020-5-25 17:20 | 只看該作者
OV2640你們能用嗎?我怎么不行
回復

使用道具 舉報

9#
ID:427723 發表于 2020-6-16 08:31 | 只看該作者
謝謝分享!
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美成人手机在线 | 国产一区三区在线 | 日韩色图在线观看 | 国产精品久久九九 | 精品自拍视频 | 91精品一区二区 | 久久99深爱久久99精品 | 四虎影视| 久久精品国产亚洲夜色av网站 | 在线中文视频 | 欧美另类视频 | 天天看天天摸天天操 | 国产精久久久久久 | 国产精品国产 | 999久久久国产精品 欧美成人h版在线观看 | 伊人久久精品一区二区三区 | 天天插天天搞 | 久久国产精品久久 | aaaa网站| 国产91成人 | 2022精品国偷自产免费观看 | 欧美精品一区二区三区蜜臀 | 亚洲欧美综合 | 国产区精品在线观看 | 亚洲日韩中文字幕一区 | 日韩精品在线播放 | 一区二区三区高清不卡 | 亚洲精品视频免费 | 成人网在线观看 | 午夜精品一区二区三区在线观看 | 中文字幕亚洲在线 | 中文字幕亚洲在线 | 国产精品一区二区久久 | 少妇午夜一级艳片欧美精品 | 丝袜一区二区三区 | 91在线一区二区三区 | 国产精品一区在线观看你懂的 | 精品国产久 | 手机av网 | 亚洲高清在线视频 | 久久国产精品偷 |