如这样的多条线合成一条线
通过斜率(垂直和平行不需要)来计算;x或y基本不变,通过求平均值得到一条线;选取最长得,注意判断误差,
部分代码,在我得项目里是可以得
*去除误差
KH1:=0
for i:=0 to Lengths-1 by 1
k:=0
for j:=0 to Lengths-1 by 1
if(i!=j)
if(RowBeginH[i]>RowBeginH[j]-30 and RowBeginH[i]<RowBeginH[j]+30)
k:=k+1
endif
endif
endfor
if(Lengths>5)
if(k<(Lengths)/3)
RowBeginH[i]:=0
KH1:=KH1+1
endif
endif
endfor
*选择水平直线,下面4个是线的两点
RBH1:=0
CBH1:=10000
REH1:=0
CEH1:=0
for i:=0 to Lengths-1 by 1
if(RowBeginH[i]>0)
if(ColBeginH[i]<ColEndH[i])
RBH1:=RBH1+RowBeginH[i]
REH1:=REH1+RowEndH[i]
if(CBH1>ColBeginH[i])
CBH1:=ColBeginH[i]
endif
if(CEH1<ColEndH[i])
CEH1:=ColEndH[i]
endif
else
RBH1:=RBH1+RowEndH[i]
REH1:=REH1+RowBeginH[i]
if(CBH1>ColEndH[i])
CBH1:=ColEndH[i]
endif
if(CEH1<ColBeginH[i])
CEH1:=ColBeginH[i]
endif
endif
endif
endfor
if(RBH1>1 and REH1>1)
RBH1:=RBH1/(Lengths-KH1)
REH1:=REH1/(Lengths-KH1)
endif
来源:CSDN
作者:yang_xiaobai
链接:https://blog.csdn.net/yang_xiaobai/article/details/103240854