1、由于兔脒巛钒图像背景颜色比较简单,所以可以直接二进制处理:img=cv2.imread(r'0.jpg')gray=cv2.cvtColor(img,cv2.COLOR_BGR2GR帆歌达缒AY)ret,t=cv2.threshold(gray,0,255, cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)
2、进行开处理:kernel=np.ones((3,3),np.uint8)a=cv2.morphologyEx(t,cv2.MORPH_OPEN,kernel,iterations=2)
3、进行膨胀处理:b=cv2.dilate(a,kernel,iterations=3)
4、进行距离变换:d=cv2.distanceTransform(a,cv2.DIST_L2 ,5)ret,f=cv2.threshold(d,0.7*d.max(),255,0)
5、f=np.uint8(f)u=b-f这是图像相减的结果。
6、用分水岭算法制作掩膜:ret,m=cv2.connectedComponents(酆璁冻嘌f)m=m+1m[u==255]=0m = cv2.watershed(img,m)cv2.imwrite('result0.png',(m+1)*255)
7、在原图中,用掩膜区分硬币。img[m == -1] = [0,255,0]