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()算法的使用介绍,如有问题,欢迎在评论区讨论。

相关推荐
雍凉明月夜1 天前
视觉opencv学习笔记Ⅲ
笔记·opencv·学习
余蓝1 天前
本地部署!文生图LCM超简单教程
图像处理·人工智能·深度学习·ai作画·stable diffusion·dall·e 2
一只侯子1 天前
Face AE Tuning
图像处理·笔记·学习·算法·计算机视觉
Coding茶水间1 天前
基于深度学习的安全帽检测系统演示与介绍(YOLOv12/v11/v8/v5模型+Pyqt5界面+训练代码+数据集)
图像处理·人工智能·深度学习·yolo·目标检测·计算机视觉
Ai173163915792 天前
2025.11.28国产AI计算卡参数信息汇总
服务器·图像处理·人工智能·神经网络·机器学习·视觉检测·transformer
AndrewHZ2 天前
【图像处理基石】如何在图像中提取出基本形状,比如圆形,椭圆,方形等等?
图像处理·python·算法·计算机视觉·cv·形状提取
深蓝海拓3 天前
opencv的模板匹配(Template Matching)学习笔记
人工智能·opencv·计算机视觉
滨HI03 天前
C++ opencv简化轮廓
开发语言·c++·opencv
Coding茶水间3 天前
基于深度学习的路面坑洞检测系统演示与介绍(YOLOv12/v11/v8/v5模型+Pyqt5界面+训练代码+数据集)
图像处理·人工智能·深度学习·yolo·目标检测·计算机视觉
Dev7z4 天前
基于Matlab传统图像处理的风景图像多风格转换与优化
图像处理·matlab·风景