当前位置:文档之家› 飞思卡尔智能车摄像头组freescale程序代码

飞思卡尔智能车摄像头组freescale程序代码

extern int left,w,top,h;extern HDC m_hdc;CBrush brush3(RGB(0,255,0));CBrush brush4(RGB(255,0,0));CBrush brush5(RGB(255,255,0));#else#include <mc9s12xdp512.h>#include "math.h"// #include "LQfun.h"#endif#ifdef ccd#define MAX_VIDEO_LINE 39#define MAX_VIDEO_POINT 187#else//#define MAX_VIDEO_LINE 26// #define MAX_VIDEO_POINT 301#define MAX_VIDEO_LINE 78#define MAX_VIDEO_POINT 57#endifextern unsigned char g_VideoImageDate[MAX_VIDEO_LINE][MAX_VIDEO_POINT];#define INT8U unsigned char#define INT8S signed char#define INT16U unsigned int#define INT16S int#define INT32S int#define NO_DATA_180 254//#define INT32U unsigned intunsigned char LIMIT=((MAX_VIDEO_POINT)/2);unsigned char MIDDLE[MAX_VIDEO_LINE];#define MAX_BLACK_NUM 7INT8S n;INT8U limit_cur;INT8U BackLineValidFlag;INT8U l_BlackStartDot;INT8U k;INT8U k2;INT8U NextFlag;INT16S g_SearchStart;INT16S g_SearchEnd;INT8U g_SearchDirection;INT16S g_BlackMiddle[2];INT8U g_BottomMiddle=MAX_VIDEO_POINT/2;INT8U g_BlackPoint[2][MAX_BLACK_NUM];INT8U g_BlackPoint_qipao[2][MAX_BLACK_NUM];INT8U cnt;INT8U cnt_large[MAX_VIDEO_LINE];INT8U cnt_qipao;INT8U g_BottomValidLine;extern INT8U g_width[MAX_VIDEO_LINE];extern INT8U g_BlackPositionCenter[MAX_VIDEO_LINE];//INT16U g_center;INT8U g_ValidLine;INT16U g_BlackLineTotal;INT8S g_error;INT8S ValidLineError;INT8S g_WidthError;INT8S g_MinWidth;INT8S g_MaxWidth;extern INT8U g_IfCross;unsigned char haveleft,haveright;unsigned char left_n,right_n,left_or_right,left_center_x,right_center_x; INT8U cur_center;//float g_DirectionControl;//float g_DirectionControl_y;//INT32S g_DirectionControlLine;void init_pic_all(){INT8U i;for(i = 0; i < MAX_VIDEO_LINE; i++) //78{//MIDDLE[MAX_VIDEO_LINE-1-i]=50+(90-50)*i/(MAX_VIDEO_LINE-1);MIDDLE[MAX_VIDEO_LINE-1-i]=30+(50-30)*i/(MAX_VIDEO_LINE-1);//150+powf(i/MAX_VIDEO_LINE,3.)/powf(1.,3.)*40;//MIDDLE[MAX_VIDEO_LINE-1-i]=90+(100-90)*i/(MAX_VIDEO_LINE-1);//150+powf(i/MA X_VIDEO_LINE,3.)/powf(1.,3.)*40;}}void init_process(void){//return;INT8U i = 0;for(i = 0; i < MAX_VIDEO_LINE; i ++) //39{g_BlackPositionCenter[i] = NO_DATA_180;g_width[i] = 0;cnt_large[i]=0;}NextFlag=0;g_IfCross=0;cnt_qipao=0;haveright=0;haveleft=0;g_SearchStart = g_BottomMiddle - LIMIT;g_SearchEnd = g_BottomMiddle + LIMIT;if(g_SearchStart < 0){g_SearchStart = 0;}if(g_SearchEnd > MAX_VIDEO_POINT-1){g_SearchEnd = MAX_VIDEO_POINT - 1;}}INT8U last(INT8U line_num,INT8U array_num){//NextFlag=0;INT8U qs;INT8U flag=0;n=line_num;// for(n = MAX_VIDEO_LINE - 1; (n > MAX_VIDEO_LINE -3) ; n --){#ifdef PCCRectbq=CRect(left+g_SearchStart*w,top+n*h,left+g_SearchStart*w+w,top+n*h+1*h);FillRect(m_hdc,bq,brush3);bq=CRect(left+g_SearchEnd*w,top+n*h,left+g_SearchEnd*w+w,top+n*h+1*h);FillRect(m_hdc,bq,brush3);#endiffor(k = 0; k < MAX_BLACK_NUM; k ++){g_BlackPoint[0][k] = NO_DATA_180;g_BlackPoint[1][k] = 0;}cnt = 0;m = g_SearchStart;INT8U process_line(INT8U linenum,INT8U array_num) {INT8U qs;INT8U true_road_cen;//if(linenum==2){// linenum++;// linenum--;//}//if(1 == NextFlag)if(NextFlag>1){//for(n = g_BottomValidLine - 1; n >= 0; n --)n=linenum;{for(k = 0;k < MAX_BLACK_NUM;k ++){g_BlackPoint[0][k] = NO_DATA_180;g_BlackPoint[1][k] = 0;}k = n + 1;while(g_BlackPositionCenter[k] == NO_DATA_180){k ++ ;}k2 = k + 1;while(g_BlackPositionCenter[k2] == NO_DATA_180){k2 ++;}//PORTB=0x00;if(k2-n>3)return 1;// PORTB=0x55;if(g_width[k2] >= g_width[k]){g_WidthError = (g_width[k2] - g_width[k])*(k2-n)/(k2-k) + 4;g_MinWidth = g_width[k] - g_WidthError;if(g_MinWidth < 2){g_MinWidth = 2;}g_MaxWidth = g_width[k] + g_WidthError;if(g_MaxWidth > 20){g_MaxWidth = 20;}}else{g_WidthError = (g_width[k] - g_width[k2])*(k2-n)/(k2-k)+4;//g_width[k] - g_width[k2] + 6;g_MinWidth = g_width[k] - g_WidthError;if(g_MinWidth < 2){g_MinWidth = 2;}g_MaxWidth = g_width[k] + g_WidthError ;if(g_MaxWidth > 20){g_MaxWidth = 20;}}V alidLineError = (g_MinWidth+g_MaxWidth)/2;//20 * (k - n);//(g_MinWidth+g_MaxWidth)*3./2.;//20 * (k - n);if(ValidLineError > 20){ValidLineError = 20;}else if(ValidLineError<10){ValidLineError=10; //ValidLineError keep}if(g_BlackPositionCenter[k2] > g_BlackPositionCenter[k]){g_SearchDirection = 1;g_error = ((g_BlackPositionCenter[k2] - g_BlackPositionCenter[k]) + ValidLineError);g_SearchStart = g_BlackPositionCenter[k] - g_error - g_MaxWidth;if((g_BlackPositionCenter[k2] - g_BlackPositionCenter[k]) > 6){g_SearchEnd = g_BlackPositionCenter[k] + g_MaxWidth / 2;}else{g_SearchEnd = g_BlackPositionCenter[k] + g_error + g_MaxWidth;}if(g_SearchStart < 0){g_SearchStart = 0;}if(g_SearchEnd >= MAX_VIDEO_POINT){g_SearchEnd = MAX_VIDEO_POINT - 1;}}else //if(g_BlackPositionCenter[k] >= g_BlackPositionCenter[k2]){g_SearchDirection = 0;g_error = ((g_BlackPositionCenter[k] - g_BlackPositionCenter[k2]) + ValidLineError);g_SearchStart = g_BlackPositionCenter[k] + g_error + g_MaxWidth;if((g_BlackPositionCenter[k] - g_BlackPositionCenter[k2]) > 6){g_SearchEnd = g_BlackPositionCenter[k] - g_MaxWidth / 2;}else{g_SearchEnd = g_BlackPositionCenter[k] - g_error - g_MaxWidth;}if(g_SearchEnd < 0){g_SearchEnd = 0;}if(g_SearchStart >= MAX_VIDEO_POINT){g_SearchStart = MAX_VIDEO_POINT - 1;}}#ifdef PCCRectbq=CRect(left+g_SearchStart*w,top+n*h,left+g_SearchStart*w+w,top+n*h+1*h);FillRect(m_hdc,bq,brush4);bq=CRect(left+g_SearchEnd*w,top+n*h,left+g_SearchEnd*w+w,top+n*h+1*h);FillRect(m_hdc,bq,brush4);#endifcnt = 0;cnt_qipao=0;if(0 == g_SearchDirection){m = g_SearchStart;while((m > g_SearchEnd) && (cnt < MAX_BLACK_NUM)){if(g_VideoImageDate[array_num][m] < MIDDLE[n]){l_BlackStartDot = m;while((g_VideoImageDate[array_num][m - 1] < MIDDLE[n]) && (m > g_SearchEnd)){m --;}if(((l_BlackStartDot - m + 1) >= g_MinWidth)){//cnt_large[n]++;#ifdef PCCRectbq=CRect(left+m*w,top+n*h,left+l_BlackStartDot*w+w,top+n*h+1*h);FillRect(m_hdc,bq,CBrush(RGB(100,100,0)));#endif/*if((l_BlackStartDot - m +1)>18&&n>20&&abs(((l_BlackStartDot + m) /2)-MAX_VIDEO_POINT/2)<MAX_VIDEO_POINT/3){cnt_qipao++;}*/if(cnt_qipao<MAX_BLACK_NUM){g_BlackPoint_qipao[0][cnt_qipao]= (l_BlackStartDot +m) / 2;g_BlackPoint_qipao[1][cnt_qipao] = l_BlackStartDot - m + 1;cnt_qipao++; //?????ùóD′óμ?}if(((l_BlackStartDot - m + 1) < g_MaxWidth)){// #ifdef PC// CRect bq=CRect(left+m*w,top+n*h,left+l_BlackStartDot*w+w,top+n*h+1*h);// FillRect(m_hdc,bq,brush5);// #endifg_BlackPoint[0][cnt] = (l_BlackStartDot + m) / 2;g_BlackPoint[1][cnt] = l_BlackStartDot - m + 1;cnt ++;}}else{;}if(m > 1){m -= 2;}else{m = 0;}}else{m --;}}}else if(1 == g_SearchDirection){m = g_SearchStart;while((m < g_SearchEnd) && (cnt < MAX_BLACK_NUM)){if(g_VideoImageDate[array_num][m] < MIDDLE[n]){l_BlackStartDot = m;while((g_VideoImageDate[array_num][m + 1] < MIDDLE[n]) && (m < g_SearchEnd)){m ++;}if( ((m - l_BlackStartDot + 1) >= g_MinWidth)){// if((m - l_BlackStartDot +1)>18&&n>20&&abs(((l_BlackStartDot + m) /2)-MAX_VIDEO_POINT/2)<MAX_VIDEO_POINT/3)//{// cnt_qipao++;//}#ifdef PCCRectbq=CRect(left+m*w,top+n*h,left+l_BlackStartDot*w+w,top+n*h+1*h);FillRect(m_hdc,bq,CBrush(RGB(100,100,0)));#endifif(cnt_qipao<MAX_BLACK_NUM){g_BlackPoint_qipao[0][cnt_qipao]= (l_BlackStartDot + m) / 2;g_BlackPoint_qipao[1][cnt_qipao] = m -l_BlackStartDot + 1;cnt_qipao++;}if(((m - l_BlackStartDot + 1) < g_MaxWidth)){#ifdef PCCRectbq=CRect(left+l_BlackStartDot*w,top+n*h,left+m*w+w,top+n*h+1*h);//FillRect(m_hdc,bq,brush5);#endifg_BlackPoint[0][cnt] = (l_BlackStartDot + m) / 2;g_BlackPoint[1][cnt] = m - l_BlackStartDot + 1;cnt ++;}}else{;}m += 2;}else{m ++ ;}}}limit_cur=g_error;for(k2 = 0; k2 < cnt; k2 ++){if((g_BlackPoint[0][k2] < (g_BlackPositionCenter[k] + g_error)) && (g_BlackPoint[0][k2] > (g_BlackPositionCenter[k] - g_error))){qs=(g_BlackPoint[0][k2]>g_BlackPositionCenter[k])?g_BlackPoint[0][k2]-g_BlackPositionCente r[k]:g_BlackPositionCenter[k]-g_BlackPoint[0][k2];if(qs<limit_cur){g_BlackPositionCenter[n] = g_BlackPoint[0][k2];g_width[n] = g_BlackPoint[1][k2];limit_cur=qs;//cur_center=k2;//k2 = MAX_BLACK_NUM;}}else if((g_BlackPoint[0][k2] > (g_BlackPositionCenter[k] + g_error))){;// do nothing}}if(g_width[n]>0&&n>18){//if(cnt_qipao>2){//AfxMessageBox("cnt_qipao>2");cur_center=254;for(k2=0;k2<cnt_qipao;k2++){if(g_BlackPositionCenter[n]==g_BlackPoint_qipao[0][k2]){if(cnt_qipao>(k2+1)&&k2>0){/*if(//abs(g_BlackPoint_qipao[1][k2+1]-g_BlackPoint_qipao[1][k2-1])<8//&&//abs((g_BlackPoint_qipao[0][k2+1]+g_BlackPoint_qipao[0][k2-1])-2*g_BlackPoint_qipao[0][k2 ])<8 //??3?//&&abs(g_BlackPoint_qipao[0][k2+1]-g_BlackPoint_qipao[0][k2])-(g_BlackPoint_qipao[1][k2+1]+g _BlackPoint_qipao[1][k2])/2<(g_BlackPoint_qipao[1][k2]*2) //????×?′ó&&abs(g_BlackPoint_qipao[0][k2-1]-g_BlackPoint_qipao[0][k2])-(g_BlackPoint_qipao[1][k2-1]+g_ BlackPoint_qipao[1][k2])/2<(g_BlackPoint_qipao[1][k2]*2) //????×?′ó&&abs(g_BlackPoint_qipao[0][k2+1]-g_BlackPoint_qipao[0][k2])-(g_BlackPoint_qipao[1][k2+1]+g _BlackPoint_qipao[1][k2])/2>g_BlackPoint_qipao[1][k2]/2 //????×?D?&&abs(g_BlackPoint_qipao[0][k2-1]-g_BlackPoint_qipao[0][k2])-(g_BlackPoint_qipao[1][k2-1]+g_ BlackPoint_qipao[1][k2])/2>g_BlackPoint_qipao[1][k2]/2 //????×?D?&&abs(g_VideoImageDate[array_num][g_BlackPoint_qipao[0][k2+1]]-g_VideoImageDate[array_nu m][g_BlackPoint_qipao[0][k2]+(abs(g_BlackPoint_qipao[0][k2+1]-g_BlackPoint_qipao[0][k2])-(g_ BlackPoint_qipao[1][k2+1]+g_BlackPoint_qipao[1][k2])/2)/2])>10&&abs(g_VideoImageDate[array_num][g_BlackPoint_qipao[0][k2-1]]-g_VideoImageDate[array_nu m][g_BlackPoint_qipao[0][k2]-(abs(g_BlackPoint_qipao[0][k2-1]-g_BlackPoint_qipao[0][k2])-(g_Bl ackPoint_qipao[1][k2-1]+g_BlackPoint_qipao[1][k2])/2)/2])>10) */if(g_BlackPoint_qipao[0][k2+1]<g_BlackPoint_qipao[0][k2-1]){qs=g_BlackPoint_qipao[0][k2+1];g_BlackPoint_qipao[0][k2+1]=g_BlackPoint_qipao[0][k2-1];g_BlackPoint_qipao[0][k2-1]=qs;qs=g_BlackPoint_qipao[1][k2+1];g_BlackPoint_qipao[1][k2+1]=g_BlackPoint_qipao[1][k2-1];g_BlackPoint_qipao[1][k2-1]=qs;}if(//abs(g_BlackPoint_qipao[1][k2+1]-g_BlackPoint_qipao[1][k2-1])<8 //×óóò3¤?àμè//&&//abs((g_BlackPoint_qipao[0][k2+1]+g_BlackPoint_qipao[0][k2-1])-2*g_BlackPoint_qipao[0][k2 ])<8 //??3?//&&abs(g_BlackPoint_qipao[0][k2+1]-g_BlackPoint_qipao[0][k2])-(g_BlackPoint_qipao[1][k2+1]+g _BlackPoint_qipao[1][k2])/2<(g_BlackPoint_qipao[1][k2]*2) //????×?′ó&&abs(g_BlackPoint_qipao[0][k2-1]-g_BlackPoint_qipao[0][k2])-(g_BlackPoint_qipao[1][k2-1]+g_ BlackPoint_qipao[1][k2])/2<(g_BlackPoint_qipao[1][k2]*2) //????×?′ó&&abs(g_BlackPoint_qipao[0][k2+1]-g_BlackPoint_qipao[0][k2])-(g_BlackPoint_qipao[1][k2+1]+g _BlackPoint_qipao[1][k2])/2>g_BlackPoint_qipao[1][k2]/2 //????×?D?&&abs(g_BlackPoint_qipao[0][k2-1]-g_BlackPoint_qipao[0][k2])-(g_BlackPoint_qipao[1][k2-1]+g_ BlackPoint_qipao[1][k2])/2>g_BlackPoint_qipao[1][k2]/2 //????×?D?&&abs(g_VideoImageDate[array_num][g_BlackPoint_qipao[0][k2+1]]-g_VideoImageDate[array_nu m][g_BlackPoint_qipao[0][k2]+g_BlackPoint_qipao[1][k2]/2+(abs(g_BlackPoint_qipao[0][k2+1]-g_ BlackPoint_qipao[0][k2])-(g_BlackPoint_qipao[1][k2+1]+g_BlackPoint_qipao[1][k2])/2)/2])>10 //?D??oúá?±?°×&&abs(g_VideoImageDate[array_num][g_BlackPoint_qipao[0][k2-1]]-g_VideoImageDate[array_nu m][g_BlackPoint_qipao[0][k2]-g_BlackPoint_qipao[1][k2]/2-(abs(g_BlackPoint_qipao[0][k2-1]-g_Bl ackPoint_qipao[0][k2])-(g_BlackPoint_qipao[1][k2-1]+g_BlackPoint_qipao[1][k2])/2)/2])>10 //?D??oúá?±?°×&&g_VideoImageDate[array_num-1][g_BlackPoint_qipao[0][k2]-g_BlackPoint_qipao[1][k2]/2-(abs(g_BlackPoint_qipao[0][k2-1]-g_Bl ackPoint_qipao[0][k2])-(g_BlackPoint_qipao[1][k2-1]+g_BlackPoint_qipao[1][k2])/2)/2]>MIDDLE[n]&&g_VideoImageDate[array_num+1][g_BlackPoint_qipao[0][k2]-g_BlackPoint_qipao[1][k2]/2-(abs(g_BlackPoint_qipao[0][k2-1]-g_Bl ackPoint_qipao[0][k2])-(g_BlackPoint_qipao[1][k2-1]+g_BlackPoint_qipao[1][k2])/2)/2]>MIDDLE[n]&&g_VideoImageDate[array_num-1][g_BlackPoint_qipao[0][k2]+g_BlackPoint_qipao[1][k2]/2+(abs(g_BlackPoint_qipao[0][k2+1]-g_BlackPoint_qipao[0][k2])-(g_BlackPoint_qipao[1][k2+1]+g_BlackPoint_qipao[1][k2])/2)/2]>MIDDLE[n]&&g_VideoImageDate[array_num+1][g_BlackPoint_qipao[0][k2]+g_BlackPoint_qipao[1][k2]/2+(abs(g_BlackPoint_qipao[0][k2+1]-g_ BlackPoint_qipao[0][k2])-(g_BlackPoint_qipao[1][k2+1]+g_BlackPoint_qipao[1][k2])/2)/2]>MIDDLE[n]){g_IfCross=1;#ifdef PCTextOut(m_hdc,left+100,top+240,"ew",8);CString sh=_T("");sh.Format("n=%d,1=%d,2=%d,3=%d",n,g_BlackPoint_qipao[0][k2-1],g_BlackPoint_qipao[0][k2 ],g_BlackPoint_qipao[0][k2+1]);CRectbq=CRect(left+(g_BlackPoint_qipao[0][k2-1]-g_BlackPoint_qipao[1][k2-1]/2)*w,top+n*h,left+(g _BlackPoint_qipao[0][k2-1]+g_BlackPoint_qipao[1][k2-1]/2)*w+w,top+n*h+1*h);FillRect(m_hdc,bq,brush5);bq=CRect(left+(g_BlackPoint_qipao[0][k2]-g_BlackPoint_qipao[1][k2]/2)*w,top+n*h,left+(g_Bl ackPoint_qipao[0][k2]+g_BlackPoint_qipao[1][k2]/2)*w+w,top+n*h+1*h);FillRect(m_hdc,bq,brush5);bq=CRect(left+(g_BlackPoint_qipao[0][k2+1]-g_BlackPoint_qipao[1][k2+1]/2)*w,top+n*h,left+( g_BlackPoint_qipao[0][k2+1]+g_BlackPoint_qipao[1][k2+1]/2)*w+w,top+n*h+1*h);FillRect(m_hdc,bq,brush5);intx=//g_BlackPoint_qipao[0][k2]+(abs(g_BlackPoint_qipao[0][k2+1]-g_BlackPoint_qipao[0][k2])-(g_BlackPoint_qipao[1][k2+1]+g_BlackPoint_qipao[1][k2])/2);g_BlackPoint_qipao[0][k2]+g_BlackPoint_qipao[1][k2]/2+(abs(g_BlackPoint_qipao[0][k2+1]-g_ BlackPoint_qipao[0][k2])-(g_BlackPoint_qipao[1][k2+1]+g_BlackPoint_qipao[1][k2])/2)/2;bq=CRect(left+(x)*w,top+n*h,left+(x)*w+w,top+n*h+1*h);FillRect(m_hdc,bq,brush5);x=//g_BlackPoint_qipao[0][k2]+(abs(g_BlackPoint_qipao[0][k2+1]-g_BlackPoint_qipao[0][k2])-(g_BlackPoint_qipao[1][k2+1]+g_BlackPoint_qipao[1][k2])/2);g_BlackPoint_qipao[0][k2]-g_BlackPoint_qipao[1][k2]/2-(abs(g_BlackPoint_qipao[0][k2-1]-g_Bl ackPoint_qipao[0][k2])-(g_BlackPoint_qipao[1][k2-1]+g_BlackPoint_qipao[1][k2])/2)/2;bq=CRect(left+(x)*w,top+n*h,left+(x)*w+w,top+n*h+1*h);FillRect(m_hdc,bq,brush5);#endif}}else if( g_IfCross==0&&cnt_qipao==k2+2){true_road_cen=k2;left_or_right=0;if(g_BlackPoint_qipao[0][k2+1]<g_BlackPoint_qipao[0][k2]){left_or_right=1;qs=g_BlackPoint_qipao[0][k2+1];g_BlackPoint_qipao[0][k2+1]=g_BlackPoint_qipao[0][k2];g_BlackPoint_qipao[0][k2]=qs;qs=g_BlackPoint_qipao[1][k2+1];g_BlackPoint_qipao[1][k2+1]=g_BlackPoint_qipao[1][k2];g_BlackPoint_qipao[1][k2]=qs;}if(//abs(g_BlackPoint_qipao[1][k2+1]-g_BlackPoint_qipao[1][k2-1])<8 //×óóò3¤?àμè//&&//abs((g_BlackPoint_qipao[0][k2+1]+g_BlackPoint_qipao[0][k2-1])-2*g_BlackPoint_qipao[0][k2 ])<8 //??3?//&&abs(g_BlackPoint_qipao[0][k2+1]-g_BlackPoint_qipao[0][k2])-(g_BlackPoint_qipao[1][k2+1]+g _BlackPoint_qipao[1][k2])/2<(g_BlackPoint_qipao[1][true_road_cen]*2) //????×?′ó&&abs(g_BlackPoint_qipao[0][k2+1]-g_BlackPoint_qipao[0][k2])-(g_BlackPoint_qipao[1][k2+1]+g _BlackPoint_qipao[1][k2])/2>g_BlackPoint_qipao[1][true_road_cen]/2 //????×?D?&&abs(g_VideoImageDate[array_num][g_BlackPoint_qipao[0][true_road_cen]]-g_VideoImageDate[ array_num][g_BlackPoint_qipao[0][k2]+g_BlackPoint_qipao[1][k2]/2+(abs(g_BlackPoint_qipao[0][k2+1]-g_BlackPoint_qipao[0][k2])-(g_BlackPoint_qipao[1][k2+1]+g_BlackPoint_qipao[1][k2])/2)/2])>10&&g_VideoImageDate[array_num-1][g_BlackPoint_qipao[0][k2]+g_BlackPoint_qipao[1][k2]/2+(abs(g_BlackPoint_qipao[0][k2+ 1]-g_BlackPoint_qipao[0][k2])-(g_BlackPoint_qipao[1][k2+1]+g_BlackPoint_qipao[1][k2])/2)/2]>MIDDLE[n]&&g_VideoImageDate[array_num+1][g_BlackPoint_qipao[0][k2]+g_BlackPoint_qipao[1][k2]/2+(abs(g_BlackPoint_qipao[0][k2+ 1]-g_BlackPoint_qipao[0][k2])-(g_BlackPoint_qipao[1][k2+1]+g_BlackPoint_qipao[1][k2])/2)/2]>MIDDLE[n]){if( left_or_right==0){ haveright=1;right_n=n;right_center_x=true_road_cen;//AfxMessageBox("right1");}else{ haveleft=1;left_n=n;left_center_x=true_road_cen;//AfxMessageBox("left1");}//AfxMessageBox("right");#ifdef PCbq=CRect(left+(g_BlackPoint_qipao[0][k2]-g_BlackPoint_qipao[1][k2]/2)*w,top+n*h,left+(g_Bl ackPoint_qipao[0][k2]+g_BlackPoint_qipao[1][k2]/2)*w+w,top+n*h+1*h);FillRect(m_hdc,bq,brush5);bq=CRect(left+(g_BlackPoint_qipao[0][k2+1]-g_BlackPoint_qipao[1][k2+1]/2)*w,top+n*h,left+( g_BlackPoint_qipao[0][k2+1]+g_BlackPoint_qipao[1][k2+1]/2)*w+w,top+n*h+1*h);FillRect(m_hdc,bq,brush5);intx=//g_BlackPoint_qipao[0][k2]+(abs(g_BlackPoint_qipao[0][k2+1]-g_BlackPoint_qipao[0][k2])-(g_BlackPoint_qipao[1][k2+1]+g_BlackPoint_qipao[1][k2])/2);g_BlackPoint_qipao[0][k2]+g_BlackPoint_qipao[1][k2]/2+(abs(g_BlackPoint_qipao[0][k2+1]-g_ BlackPoint_qipao[0][k2])-(g_BlackPoint_qipao[1][k2+1]+g_BlackPoint_qipao[1][k2])/2)/2;bq=CRect(left+(x)*w,top+n*h,left+(x)*w+w,top+n*h+1*h);FillRect(m_hdc,bq,brush5);#endif}}else if( g_IfCross==0&&cnt_qipao==k2+1&&k2>0){true_road_cen=k2;left_or_right=0;if(g_BlackPoint_qipao[0][k2]<g_BlackPoint_qipao[0][k2-1]){left_or_right=1;qs=g_BlackPoint_qipao[0][k2-1];g_BlackPoint_qipao[0][k2-1]=g_BlackPoint_qipao[0][k2];g_BlackPoint_qipao[0][k2]=qs;qs=g_BlackPoint_qipao[1][k2-1];g_BlackPoint_qipao[1][k2-1]=g_BlackPoint_qipao[1][k2];g_BlackPoint_qipao[1][k2]=qs;}if(abs(g_BlackPoint_qipao[0][k2-1]-g_BlackPoint_qipao[0][k2])-(g_BlackPoint_qipao[1][k2-1]+g_ BlackPoint_qipao[1][k2])/2<(g_BlackPoint_qipao[1][true_road_cen]*2) //????×?′ó&&abs(g_BlackPoint_qipao[0][k2-1]-g_BlackPoint_qipao[0][k2])-(g_BlackPoint_qipao[1][k2-1]+g_ BlackPoint_qipao[1][k2])/2>g_BlackPoint_qipao[1][true_road_cen]/2 //????×?D?&&abs(g_VideoImageDate[array_num][g_BlackPoint_qipao[0][true_road_cen]]-g_VideoImageDate[ array_num][g_BlackPoint_qipao[0][k2]-g_BlackPoint_qipao[1][k2]/2-(abs(g_BlackPoint_qipao[0][k2-1]-g_Bl ackPoint_qipao[0][k2])-(g_BlackPoint_qipao[1][k2-1]+g_BlackPoint_qipao[1][k2])/2)/2])>10&&g_VideoImageDate[array_num-1][g_BlackPoint_qipao[0][k2]-g_BlackPoint_qipao[1][k2]/2-(abs(g_BlackPoint_qipao[0][k2-1]-g_BlackPoint_qipao[0][k2])-(g_BlackPoint_qipao[1][k2-1]+g_BlackPoint_qipao[1][k2])/2)/2]>MIDDLE[n]&&g_VideoImageDate[array_num+1][g_BlackPoint_qipao[0][k2]-g_BlackPoint_qipao[1][k2]/2-(abs(g_BlackPoint_qipao[0][k2-1]-g_Bl ackPoint_qipao[0][k2])-(g_BlackPoint_qipao[1][k2-1]+g_BlackPoint_qipao[1][k2])/2)/2]>MIDDLE[n]){if(left_or_right==0){haveleft=1;left_n=n;left_center_x=true_road_cen;//AfxMessageBox("left2");}else{haveright=1;right_n=n;right_center_x=true_road_cen;//AfxMessageBox("right2");}//AfxMessageBox("left");#ifdef PCCRectbq=CRect(left+(g_BlackPoint_qipao[0][k2-1]-g_BlackPoint_qipao[1][k2-1]/2)*w,top+n*h,left+(g _BlackPoint_qipao[0][k2-1]+g_BlackPoint_qipao[1][k2-1]/2)*w+w,top+n*h+1*h);FillRect(m_hdc,bq,brush5);bq=CRect(left+(g_BlackPoint_qipao[0][k2]-g_BlackPoint_qipao[1][k2]/2)*w,top+n*h,left+(g_Bl ackPoint_qipao[0][k2]+g_BlackPoint_qipao[1][k2]/2)*w+w,top+n*h+1*h);FillRect(m_hdc,bq,brush5);intx=g_BlackPoint_qipao[0][k2]-g_BlackPoint_qipao[1][k2]/2-(abs(g_BlackPoint_qipao[0][k2-1]-g_BlackPoint_qipao[0][k2])-(g_BlackPoint_qipao[1][k2-1]+g_BlackPoint_qipao[1][k2])/2)/2;bq=CRect(left+(x)*w,top+n*h,left+(x)*w+w,top+n*h+h);FillRect(m_hdc,bq,CBrush(RGB(100,100,0)));#endif}}}}}}cnt_large[n]=0;if(cur_center<254&&cnt>1){if(cur_center==0&&(0 == g_SearchDirection) ) cnt_large[n]=1;else if(cur_center==0&&(1 == g_SearchDirection) ) cnt_large[n]=2;else if(cur_center==cnt-1&&(0 == g_SearchDirection) ) cnt_large[n]=2;else if(cur_center==cnt-1&&(1 == g_SearchDirection) ) cnt_large[n]=1;else cnt_large[n]=3;}if(((g_BlackPositionCenter[k] < 5) || (g_BlackPositionCenter[k] >= MAX_VIDEO_POINT-5)) ){// not_use_ava=1;if(((k - n) > 3)) {g_BlackPositionCenter[n] = NO_DATA_180;g_width[n] = 0;//n = -1;return 1;}}}}return 0;}void final(){signed char jj;g_ValidLine = 0;g_BlackLineTotal = 0;for(n = (MAX_VIDEO_LINE - 1);n>=0; n --){if(g_BlackPositionCenter[n] != NO_DATA_180){#ifdef PCCRectbq=CRect(left+g_BlackPositionCenter[n]*w,top+n*h,left+g_BlackPositionCenter[n]*w+w,top+n *h+1*h);FillRect(m_hdc,bq,brush3);bq=CRect(left+(g_BlackPositionCenter[n]+g_width[n]/2)*w,top+n*h,left+(g_BlackPositionCente r[n]+g_width[n]/2)*w+w,top+n*h+1*h);FillRect(m_hdc,bq,brush3);bq=CRect(left+(g_BlackPositionCenter[n]-g_width[n]/2)*w,top+n*h,left+(g_BlackPositionCenter [n]-g_width[n]/2)*w+w,top+n*h+1*h);FillRect(m_hdc,bq,brush3);#endifg_V alidLine ++;g_BlackLineTotal += g_BlackPositionCenter[n];}if(n == MAX_VIDEO_LINE - 10){if(g_ValidLine != 0){g_BottomMiddle = g_BlackLineTotal / g_ValidLine;#ifdef PCCString numstr=_T("");numstr.Format("%d",g_BottomMiddle);TextOut(m_hdc,left+180,top+200,numstr,numstr.GetLength());#endif//break;}else{for(jj=MAX_VIDEO_LINE - 10;jj>=0;jj--){if(g_BlackPositionCenter[jj] != NO_DATA_180){ g_BottomMiddle=g_BlackPositionCenter[jj];break;}}}}else{;}}if(g_IfCross==0&&haveleft==1&&haveright==1&&abs(left_n-right_n)<2&&abs(left_center_x-right_center_x)<4){g_IfCross=1;}#ifdef PCif(g_IfCross==1)AfxMessageBox("qipao");#endifif(g_V alidLine == 0){if(g_BlackMiddle[0] < MAX_VIDEO_POINT/2-5){g_BlackMiddle[1] = 0;g_BlackMiddle[0] = 1;}else if(g_BlackMiddle[0] >= MAX_VIDEO_POINT/2+5){g_BlackMiddle[1] = MAX_VIDEO_POINT-1;g_BlackMiddle[0] = MAX_VIDEO_POINT-2;}else{g_BlackMiddle[1] = g_BlackMiddle[0];}}else{g_BlackMiddle[1] = g_BlackLineTotal / g_V alidLine;g_BlackMiddle[0] = g_BlackMiddle[1];}if(g_BlackMiddle[1] < 0){g_BlackMiddle[1] = 0;}else if(g_BlackMiddle[1] > MAX_VIDEO_POINT-1){g_BlackMiddle[1] = MAX_VIDEO_POINT-1;}else{;}}。

相关主题