halcon多条线合并为一条问题

如这样的多条线合成一条线
在这里插入图片描述
通过斜率(垂直和平行不需要)来计算;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

你可能感兴趣的:(图像)