cv2分水岭算法进行图像分割

本文详细介绍了分水岭算法在图像分割中的应用,通过将图像视为拓扑平面,利用OpenCV库的cv2模块,用Python实现分水岭算法。文章通过实例代码展示了如何对图像进行分割,并给出了原图和处理后的结果图片。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本篇博客主要介绍分水岭算法。

任何一副图像都可以看成拓扑平面,灰度值高的区域可以看成是山峰,灰度值低的地方可以看成是山谷,我们向每一个山谷中灌注不同颜色的水,随着水位的上升,不用山谷的水就会相遇汇合,为了防止不同颜色的水汇合,我们需要在水汇合的地方构建堤坝,不停的灌水的同时不停的构建堤坝,知道所有的山峰都被水淹没,我们构建好的堤坝就是对图像的分割,这就是分水岭算法背后的原理。

示例:

示例代码:

# encoding:utf-8
import cv2
import numpy as np
import matplotlib.pyplot as plt

img = cv2.imread('../data/water_coins.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ret, thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)

kernel = np.ones((3, 3), np.uint8)
opening = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, kernel, iterations=2)

sure_bg = cv2.dilate(opening, kernel, iterations=3)

'''
距离变换基本含义是计算一个图像中费像素点到最
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cchangcs

谢谢你的支持~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值