欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
stm32f407驅動OV2640二值化(成功版源碼下載)
[打印本頁]
作者:
lt562626749
時間:
2018-3-30 17:01
標題:
stm32f407驅動OV2640二值化(成功版源碼下載)
stm32f4驅動ov2640圖像處理
stm32單片機源程序如下:
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "key.h"
#include "lcd.h"
#include "ltdc.h"
#include "sdram.h"
#include "pcf8574.h"
#include "timer.h"
#include "ov5640.h"
#include "usart2.h"
#include "dcmi.h"
#include "usmart.h"
//分辨率 x,y
#define X 160
#define Y 120
#define buf_size X*Y
//提取R、G、B的參數
#define RGB_R 0XF800
#define RGB_G 0X07E0
#define RGB_B 0X001F
//fps、FPS數組存入采集回來的信息
u32 fps[buf_size];
u16 FPS[buf_size];
//變量R,G,B
u16 R,G,B;
u16 threshold=32767;//閾值
/*************
函數:灰度化且二值化函數
返回值類型:u16
返回值:二值化后的值
形參:采集的像素點數據
*************/
u16 Binary(u16 pixel)
{
static u16 Gray;
/*******提取R,G,B值*******/
R = (pixel&RGB_R)>>11;
G = (pixel&RGB_G)>>5;
B = (pixel&RGB_B);
/*******灰度值計算*******/
/*******網絡上大部分的公式是針對8位的*******/
/*******這條公式是針對12位的******/
Gray = (u16)((R*634+G*613+B*232));
/*******二值化*******/
if(Gray<threshold)
Gray = BLACK;
else if(Gray>=threshold)
Gray = WHITE;
return Gray;
}
//處理數據
//當采集完一幀數據后,調用此函數.開始下一幀采集.
//該函數會被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++;
}
}
}
//RGB565測試
//RGB數據直接顯示在LCD上面
void rgb565_test(void)
{
u8 key;
u8 k;
u16 outputheight=0;
LCD_Clear(WHITE);
POINT_COLOR=RED;
//自動對焦初始化
OV5640_RGB565_Mode(); //RGB565模式
OV5640_Focus_Init();
OV5640_Light_Mode(0); //自動模式
OV5640_Color_Saturation(3);//色彩飽和度0
OV5640_Brightness(4); //亮度0
OV5640_Contrast(3); //對比度0
OV5640_Sharpness(33); //自動銳度
//OV5640_Focus_Constant();//啟動持續對焦
/*************這里初始化PCLK、VSYNC、HSYNC和數據口******************/
DCMI_Init(); //DCMI配置
DCMI_DMA_Init((u32)fps,0,buf_size,DMA_MDATAALIGN_HALFWORD,DMA_MINC_ENABLE);
TIM3->CR1&=~(0x01); //關閉定時器3,關閉幀率統計,打開的話,RGB屏,在串口打印的時候,會抖
outputheight=lcddev.height;
OV5640_OutSize_Set(0,0,X*2,Y*2); //滿屏縮放顯示
LCD_Clear(BLACK);
delay_ms(100);
LCD_SetCursor(0,0);
DCMI_Start(); //啟動傳輸
while(1)
{
key=KEY_Scan(0);
if(key==KEY0_PRES)
OV5640_Focus_Single();
else if(key==KEY1_PRES)
{
k++;
if(k%2==1)
OV5640_Flash_Ctrl(1);//打開閃光燈
else
OV5640_Flash_Ctrl(0);//關閉閃光燈
}
}
}
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;//設置字體為紅色
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();
}
復制代碼
下載:
二值化5-成功.rar
(1.03 MB, 下載次數: 172)
2018-3-31 02:40 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
jiaowojjj
時間:
2018-4-7 16:13
學習下
作者:
liu666666
時間:
2018-6-17 13:33
這是5640不是2640
作者:
霰雪明花
時間:
2018-9-14 19:46
請問攝像頭用的是OV5640還是OV2640?
作者:
狗狗祟祟
時間:
2019-7-13 17:05
正在搞。學習下
作者:
zinuo
時間:
2019-7-26 14:35
頂,前來學習。
作者:
1334070045
時間:
2019-9-6 18:04
阿波羅F429驅動OV5640,別被p積分了
作者:
ljjakey
時間:
2020-5-25 17:20
OV2640你們能用嗎?我怎么不行
作者:
jinniuxing88888
時間:
2020-6-16 08:31
謝謝分享!
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1