def main(img): """ 主程序 """ # 二值化: 基于迭代法获取二值化阈值 print("Processing: 二值化...") k, img_bin = binaryzation(img) print("阈值:", k) cv2.imwrite("bin.png", img_bin) # 基于腐蚀和开运算的骨架提取 print("Processing: 基于腐蚀和开运算的骨架提取...") img_sk_morph = sk_morph(img_bin) cv2.imwrite("morph.png", img_sk_morph) # 基于单纯细化的骨架提取 print("Processing: 基于单纯细化的骨架提取...") img_sk_thin = sk_thin(img_bin) cv2.imwrite("morph_thin.png", img_sk_thin) # 基于距离变换的骨架提取 print("Processing: 基于距离变换的骨架提取...") img_sk_dist = sk_distTrans(img_bin) cv2.imwrite("dist.png", img_sk_dist) # 裁剪:以细化所得骨架为例 print("Processing: 裁剪:以细化所得骨架为例...") img_result = tailor(img_sk_thin) cv2.imwrite("tailor.png", img_result)
def read(img): result = "" img = binaryzation(img) #img.show() imgArray = split(img) if not imgArray: return "文本粘连,分割失败" for singImg in imgArray: result += compleModel(singImg) return result
for i in range(h-1,-1,-1): for j in range(w-1,-1,-1): temp0=distance[i+2][j+2]+4 temp1=min(temp0,distance[i+2][j+1]+3) temp2=min(temp1,distance[i+1][j+2]+3) temp3=min(temp2,distance[i+2][j]+4) distance[i+1][j+1]=min(temp3,distance[i+1][j+1]) return distance if __name__=='__main__': start=time.clock() img=cv2.imread('in\\fingerPrint.jpg',0) img=binaryzation.binaryzation(img,100) plt.subplot(1,2,1) plt.imshow(img,'gray') skeleton=dis_ske(img) plt.subplot(1,2,2) plt.imshow(skeleton, 'gray') plt.show() end=time.clock() print(end-start)