高级会员
- 积分
- 656
- 威望
- 407
- 贡献
- 75
- 兑换币
- 0
- 注册时间
- 2010-9-30
- 在线时间
- 87 小时
|
1贡献
这是摄像头采集的图像发送到串口的显示
哪位大侠指点下我 黑线提取程序要怎么弄 下面这程序死活都不行 还望指点迷津
void GetBlackline()
{
char i=0,j=0,leftj,rightj;
int temp=0;
unsigned char left=0,right=0,left_flag=0,right_flag=0;
Line_Center[ROW_VALUE-1]=Line_Center[0];//
/////图像前部分用边缘检测法
for(i=37;i>=1;i--) //i>=0ROW_VALUE-1ROW_MID
{
left=0; //左右跳变清零
right=0;
for(j=5;j<=66;j++) //两边搜索 最边界干扰略去
{
if(Image[j]>Image[j+1]) //)&&(Image[j]==Image[j-1])
{
leftj=j;
left=leftj; //从左到右第一个由白跳变为黑的点
left_flag++; //记录黑白跳变个数
}
if(Image[j]<Image[j+1])
{
rightj=j;
right=rightj;//COLUMN_VALUE-j;//从右到左第一个由白跳变为黑的点
right_flag++; // 记录黑白跳变个数
}
} //////////求黑线的中心
if((left_flag>=1) && (right_flag>=1))
{
left_flag=0; //清零,这是必须的
right_flag=0;
if((right-left)>2&&(right-left)<10)
{
Line_Center=(right+left+1)/2; //过滤过宽过细的黑线
_asm(nop);
}
else /////////////////过宽过细黑线进行插值
{
left_flag=0; //清零,这是必须的
right_flag=0;
if(i>=ROW_VALUE-3)
{
Line_Center[i-1]=Line_Center;
}
else
{
temp=2*Line_Center[i+1]-Line_Center[i+2];
if(temp>70)
temp=70;
if(temp<0)
temp=0;
Line_Center=temp;
}
}
}
} /////图像后部分用边缘检测法 |
|