STM327725和7670二值化程式

2021-08-19 01:15:25 字數 3856 閱讀 5355

#include "sys.h"

#include "ov7725.h"

#include "ov7725config.h"  

#include "delay.h"

#include "usart.h"   

#include "sccb.h" 

#include "lcd.h"

#include "timer.h"

#include "exti.h" //

//alientek精英stm32開發板

//ov7725 驅動**   

//正點原子@alientek

//技術論壇:www.openedv.com

//修改日期:2017/11/1

//版本:v1.0                          //

//更新lcd顯示

u32 j,i,x=0,y=0;

u16 color; 

u8 gm_red, gm_green, gm_blue; 

u8 tm=0;

int r,tt; 

u8 lightmode=0,saturation=2,contrast=2;

u8 effect=0; 

u8 msgbuf[15];    //訊息快取區

extern u8 ov_sta;

extern u8 ov_frame;

//初始化ov7725

//返回0:成功

//返回其他值:錯誤**

u8 ov7725_init(void)

reg=sccb_rd_reg(0x0a);  //讀取廠家id 高八位

reg<<=8;

reg|=sccb_rd_reg(0x0b);  //讀取廠家id 低八位

if(reg!=ov7725_pid)

//初始化 ov7725,採用qvga解析度(320*240) 

for(i=0;icase 5://night,夜晚

sccb_wr_reg(0x13, 0xff); //awb on

sccb_wr_reg(0x0e, 0xe5);

break; }

}   

//色度設定

//sat:-4~+4

void ov7725_color_saturation(s8 sat)

} //亮度設定

//bright:-4~+4

void ov7725_brightness(s8 bright)

sccb_wr_reg(bright, bright_value);

sccb_wr_reg(sign, sign); }

//對比度設定

//contrast:-4~+4

void ov7725_contrast(s8 contrast)

} //特效設定

//0:普通模式   

//1,負片

//2,黑白  

//3,偏紅色

//4,偏綠色

//5,偏藍色

//6,復古    

void ov7725_special_effects(u8 eft)

}  //設定影象輸出視窗

//width:輸出影象寬度,<=320

//height:輸出影象高度,<=240

//mode:0,qvga輸出模式;1,vga輸出模式

//qvga模式可視範圍廣但近物不是很清晰,vga模式可視範圍小近物清晰

void ov7725_window_set(u16 width,u16 height,u8 mode)

else

raw=sccb_rd_reg(hstart);

temp=raw+(sx>>2);//sx高8位存在hstart,低2位存在href[5:4]

sccb_wr_reg(hstart,temp);

sccb_wr_reg(hsize,width>>2);//width高8位存在hsize,低2位存在href[1:0]

raw=sccb_rd_reg(vstrt);

temp=raw+(sy>>1);//sy高8位存在vstrt,低1位存在href[6]

sccb_wr_reg(vstrt,temp);

sccb_wr_reg(vsize,height>>1);//height高8位存在vsize,低1位存在href[2]

raw=sccb_rd_reg(href);

temp=((sy&0x01)<<6)|((sx&0x03)<<4)|((height&0x01)<<2)|(width&0x03)|raw;

sccb_wr_reg(href,temp);

sccb_wr_reg(houtsize,width>>2);

sccb_wr_reg(voutsize,height>>1);

sccb_rd_reg(exhch); 

temp = (raw|(width&0x03)|((height&0x01)<<2)); 

sccb_wr_reg(exhch,temp);  }

u16 array[60] =;

void camera_refresh()

lcd_showstring(30,17,200,16,16,"ov7725 init ok");

delay_ms(500);     

ov7725_light_mode(lightmode);

ov7725_color_saturation(saturation);

ov7725_contrast(contrast);

ov7725_special_effects(effect);    

tim6_int_init(10000,7199);   //10khz計數頻率,1秒鐘中斷          

exti8_init();      //使能定時器捕獲 

ov7725_window_set(320,240,0); //1為vga模式輸出

//ov7725_window_set(ov7725_window_width,ov7725_window_height,0);//0為qvga模式輸出 

ov7725_cs=0;   

lcd_display_dir(0); 

while(1)

else  

lcd->lcd_ram=color;  }

}if(j == array[k]&&(k<=60))//init(k) = 0           -=

else if(k < 40)

else if(k < 60)

k++;

}  

}   

ov_sta=0;     //開始下一次採集

ov_frame++;

//  lcd_scan_dir(dft_scan_dir); //恢復預設掃瞄方向

k=0;

if(whitepoint<=13)     //中間端未檢測到白色則停止

else

if(leftblackpoint <= 13 && rightblackpoint >13) //左端白色 右端黑色 則嚮往右

if(leftblackpoint > 13 && rightblackpoint <= 13) //右端白色 左端黑色 則嚮往左

} }

//return judgeflag; 

//   gpio_resetbits(gpiob,gpio_pin_5);//紅亮

//  ov_sta=0;     //清零幀中斷標記

//  ov_frame++;

lcd_scan_dir(dft_scan_dir); //恢復預設掃瞄方向 }

最小值和第二小值

這個問題來自演算法導論的習題9.1 1.問題是這樣的 證明 在最壞情況下,利用n lgn 2次比較,即可找到n個元素中的第二小元素。證明 構造出這種比較方法就可以了。看見lgn就應該想到配對。實際上,將n個元素兩兩分組進行比較,選取每次比較中的較小元素,這樣一來,可以一直做下去直到得到最小元素,這需...

OpenCVForUnity二值化和灰度化

隨著csdn部落格系統公升級,嘗試使用md寫文章,感覺還不錯。繼續使用opencvforunity處理,今次的效果是灰度化和二值化,當所有功能實現後,可能會做出乙個unity版的美圖秀秀。什麼,沒看懂?那看一下這張圖吧,解釋了什麼叫做 有一張好圖,就可以什麼也不用解釋了 很明顯,灰度圖的取值範圍比二...

MATLAB一維插值和二維插值

插值問題描述 已知 乙個函式上的若干點,但函式具體表示式未知,現在要利用已知的若干點求在其他點處的函式值,這個過程就是插值的過程.1.一維插值 一維插值就是給出y f x 上的點 x1,y1 x2,y2 xn,yn 由此求出y f x 在點xa處的值ya的值.實現一維插值使用interp1命令,使用...