📄 contrast.c
字号:
#include "contrast.h"
#define gate_value 30
#define Size 16
#define h_Size 26
extern unsigned char ping_data[180*96];
extern unsigned char pong_data[180*96];
extern int m_old_x ;
extern int m_old_y ;
extern int old_point_x ;
extern int old_point_y ;
void YY_contrast( unsigned char *Src ,unsigned char *Src1)//
{
unsigned char *lpSrc ; //输入图像指针
unsigned char *lpstd ; // 输出图像指针
int f = 0 ,
e = 0 ,
i = 0 ,
j = 0 ,
w = 0 ; //表示判断的高度
int x = 0 ;
int y = 0 ;
int width = 180 ;
int height = 96 ;
int x_val = 0 ;
int y_val = 0 ;
int old_x = 90 ;
int old_y = 48 ;
unsigned char first_flag = 1 ;
int lBlackNum[9] ; //投影像素数量
int Num = 0 , value = 0 ;
int vision = 0 ;
do
{
w = 0 ;
value = 0 ;
Num = 0 ;
for(j = 0 ; j < 9 ; j++)
lBlackNum[j] = 0 ;
for( f = -1 ; f <= 1 ;f ++)
{
for( e = -1 ; e <= 1 ; e ++)
{
for(j = old_y - Size ; j < old_y + Size ; j++ )
{
for( i = old_x - h_Size ; i < old_x + h_Size; i++ )
{
lpSrc = Src + i + j*width ;
lpstd = Src1 + (i + e + x) + (j + f + y) * width ;
if( abs( (*lpSrc) - (*lpstd)) > gate_value )
{
lBlackNum[w]++ ;
}
}
}
w++ ;
}
}
Num = lBlackNum[4] ;
value = 4 ;
for(i = 0 ; i < 9 ; i++)
{
if ( Num > lBlackNum[i] )
{
Num = lBlackNum[i] ;
value = i ;
}
}
switch(value)
{
case 0: x = x - 1 ; y = y - 1 ; break ;
case 1: y = y - 1 ; break ;
case 2: x = x + 1 ; y = y - 1 ; break ;
case 3: x = x - 1 ; break ;
case 4: x_val = x ; y_val = y ; first_flag = 0 ; break ;
case 5: x = x + 1 ; break ;
case 6: x = x - 1 ; y = y + 1 ; break ;
case 7: y = y + 1 ; break ;
case 8: x = x + 1 ; y = y + 1 ; break ;
default: break ;
}
vision ++ ; //对比次数
if(vision >= 16 )
{
first_flag = 0 ;
x_val = x ;
y_val = y ;
}
x_val = x ;
y_val = y ;
}while( first_flag );
m_old_x = x_val ;
m_old_y = y_val ;
old_point_x = m_old_x + old_point_x ;
old_point_y = m_old_y + old_point_y ;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -