譯文 張
/
BX-car
good
Fork of BX-car by
Diff: camera_api.cpp
- Revision:
- 10:d2401a243e8d
- Parent:
- 8:8e49e21d80a2
--- a/camera_api.cpp Tue Jun 24 10:06:54 2014 +0000 +++ b/camera_api.cpp Wed Jun 25 05:07:13 2014 +0000 @@ -1,7 +1,9 @@ #include "mbed.h" #include "camera_api.h" +#define clk 2 //ms -#define clk 2 //ms + + BX_camera::BX_camera(void) { @@ -16,160 +18,25 @@ int BX_camera::black_centerR(void) { - int l_care=10; - int r_care=118; - - - // find center - // case 1 // | // - // case 2 / | / - - char find_type=0x00; - - int b_end=0; - int b_start=0; - - int b_w=0; - int b_center=0; - - int b2_end=0; - int b2_start=0; - int b2_center=0; - - int b2_w=0; - - int center=30; - int j=64; - bool f1=false; - bool f2=false; - bool f3=false; - bool f4=false; - int w_thr_up=32; - int w_thr_dn=0; - - if(sign_line_imageR[64]==' ') - find_type=0x02; - else - find_type=0x01; - - - for(int i=64; i<r_care; i++,j--) { - - - switch(find_type) { - - - case 0x01: - - if(f1==false&&sign_line_imageR[i]==' ') { - if(f1==false) { - b_start=i; - f1=true; - } - - } - if(f1== true&& f2==false&&sign_line_imageR[i]=='O') { - if(f2==false) { - b_end=i-1; - f2=true; - } - - } - - if(f3==false&&sign_line_imageR[j]==' ') { - if(f3==false) { - b2_end=j; - f3=true; - } - - } - if(f3==true&&f4==false&&sign_line_imageR[j]=='O') { - if(f4==false) { - b2_start=j-1; - f4=true; - } - - } + int black_left , black_right; + + for(int i = 10; i < 115; i++){ + if(sign_line_imageR[i] == 'O' && sign_line_imageR[i+1] == ' ' && sign_line_imageR[i+2] == ' '){ + black_left = i; + break; + } + } + + for(int i = 115; i > 10; i--){ + if(sign_line_imageR[i] == ' ' && sign_line_imageR[i+1] == ' ' && sign_line_imageR[i+2] == ' '){ + black_right = i+2; + break; + } + } + + return (black_left + black_right) / 2; - break; - - - case 0x02: - - if(sign_line_imageR[i]=='O') { - - if(f1==false) { - b_end=i; - f1=true; - } - } - - if(sign_line_imageR[j]=='O') { - - if(f2==false) { - b_start=j; - f2=true; - } - - } - - - break; - - } - - - } - - b_w=b_start-b_end; - b2_w=b2_start-b2_end; - - de_v=b2_start; - de_v2=b2_end; - - switch(find_type) { - - case 0x01: - b_center=(b_end+b_start)/2; - b2_center=(b2_end+b2_start)/2; - - - if(w_thr_up>b_w&&(b_center!=0)&&(b_center-64)<(64-b2_center)) - center=b_center; - else - center=b2_center; - - - - - -/* if( ( w_thr_up- (b_w))>0 &&( ( w_thr_up- (b_w)) < (w_thr_up-(b2_w)) ) ) { - center=(b_end+b_start)/2; - - - - // } else if( ( w_thr_up- (b2_w) )>0 ) { - center=(b2_end+b2_start)/2; -// } else { - - center=65; - - //???????????????? - - } - -*/ - break; - - case 0x02: - center=(b_end+b_start)/2; - - - break; - } - - return center; } @@ -323,7 +190,7 @@ //input 128 //both - for(int i=0; i<128; i++) { + for(int i=127; i>=0; i--) { *cam_clk=1; wait_us(5); @@ -359,7 +226,7 @@ //filter L R //may change - for(int i=0; i<128; i++) { + for(int i=127; i>=0; i--) { if( (line_imageR[i]-b_f_vR) < (w_f_vR - line_imageR[i] ) )