【python入门】基于opencv的分水岭算法

 时间:2026-04-21 20:31:05

1、由于图像背景颜色比较简单,所以可以直接二进制处理:

img=cv2.imread(r'0.jpg')

gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

ret,t=cv2.threshold(gray,0,255,

                    cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)

【python入门】基于opencv的分水岭算法

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)

【python入门】基于opencv的分水岭算法

4、进行距离变换:

d=cv2.distanceTransform(a,cv2.DIST_L2 ,5)

ret,f=cv2.threshold(d,0.7*d.max(),255,0)

【python入门】基于opencv的分水岭算法

5、f=np.uint8(f)

u=b-f

这是图像相减的结果。

【python入门】基于opencv的分水岭算法

6、用分水岭算法制作掩膜:

ret,m=cv2.connectedComponents(f)

m=m+1

m[u==255]=0

m = cv2.watershed(img,m)

cv2.imwrite('result0.png',(m+1)*255)

【python入门】基于opencv的分水岭算法

7、在原图中,用掩膜区分硬币。

img[m == -1] = [0,255,0]

【python入门】基于opencv的分水岭算法

  • 利用MapShaper将SHP文件转换成GeoJSON格式文件
  • ps cc怎么合并形状?
  • 在ENVI中如何进行目标探测与识别 (中)?
  • 如何制作麦当劳里的美味炸薯条
  • 金铲铲之战怎样修复游戏
  • 热门搜索
    栖霞山枫叶什么时候红 快递什么时候放假 earth是什么意思 remove是什么意思 大飞机是什么意思 disappointed是什么意思 杀鸡取卵的意思 郑重其事是什么意思 学而不厌诲人不倦的意思 卡卡西为什么杀死琳