OpenCV图像处理-图像分割-MeanShift

MeanShift

1. 基本概念

MeanShift严格说来并不是用来对图像进行分割的,而是在色彩层面的平滑滤波。它会中和色彩分布相近的颜色,平滑色彩细节,侵蚀掉面积较小的的颜色区域,它以图像上任意一点P为圆心,半径为sp,色彩幅值为sr进行不断地迭代。

语法:pyrMeanShiftFiltering(img, double sp, double sr, maxLevel = 1, termcrit = TermCriteria...)

img:要平滑的图像

sp:检测半径,越大模糊越高,效果越好。

sr:色彩幅值,越大,连成一片的可能性越大。

剩下的参数都为默认值就可以。

2.代码示例

首先使用MeanShift平滑图片,然后使用Canny检测边缘,最后画出边缘即可,画出的边缘就是前景。

python 复制代码
import cv2


img = cv2.imread('./image/flower.png')
mean_img = cv2.pyrMeanShiftFiltering(img, 20, 30)

# 使用canny检测边缘
canny_img = cv2.Canny(mean_img, 150, 300)

# 检测轮廓
contours, _ = cv2.findContours(canny_img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

cv2.drawContours(img, contours, -1, (0, 0, 255), 1)

cv2.imshow('img', img)
cv2.imshow('mean_img', mean_img)
cv2.imshow('canny_img', canny_img)
cv2.waitKey(0)

效果如下:

以上就是MeanShift()算法的使用介绍,如有问题,欢迎在评论区讨论。

相关推荐
Wnq100722 小时前
如何在移动 的巡检机器人上,实现管道跑冒滴漏的视觉识别
数码相机·opencv·机器学习·计算机视觉·目标跟踪·自动驾驶
yugi9878386 小时前
基于DNA编码与混沌系统的图像加密
图像处理
曾经的三心草10 小时前
OpenCV4-直方图与傅里叶变换-项目实战-信用卡数字识别
python·opencv·计算机视觉
luoganttcc11 小时前
在 orin 上 安装了 miniconda 如何使用 orin 内置的 opencv
人工智能·opencv·计算机视觉
JinchuanMaster11 小时前
cv_bridge和openCV不兼容问题
人工智能·opencv·计算机视觉
heisd_112 小时前
在编译opencv出现的问题
人工智能·opencv·计算机视觉
算法打盹中13 小时前
计算机视觉:卷积神经网络(CNN)图像分类从像素与色彩通道基础到特征提取、池化及预测
图像处理·神经网络·计算机视觉·cnn·图像分类
却道天凉_好个秋14 小时前
OpenCV(十一):色彩空间转换
人工智能·opencv·计算机视觉
AIminminHu14 小时前
系列文章<一>(从LED显示问题到非LED领域影像画质优化:揭秘跨领域的核心技术):从LED冬奥会、奥运会及春晚等大屏,到手机小屏,快来挖一挖里面都有什么
图像处理·led·isp·isp pipeline·ai hdr·成像系统
zy_destiny16 小时前
【工业场景】用YOLOv8实现行人识别
人工智能·深度学习·opencv·算法·yolo·机器学习