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

相关推荐
xailorliu1 天前
SLIC_超像素算法
c++·opencv·目标检测·机器学习·计算机视觉
原子延迟1 天前
红色的字压成JPEG就发糊,查到最后是色度抽样
图像处理·人工智能·计算机视觉
Martina_03211 天前
AI生成3D场景第一次进入总卡一下?用6步排查Shader编译、纹理上传与预加载
图像处理·人工智能·游戏·3d·ai·自然语言处理·游戏策划
pride.li1 天前
ISP标定-AWB标定(Auto White Balance,自动白平衡校准)
图像处理·计算机视觉·isp
企业数字化笔记1 天前
视觉智能体怎么选技术?目标检测、跟踪、分割、OpenCV和FFmpeg的职责划分
opencv·目标检测·ffmpeg
硬件学长森哥2 天前
成像技术实例-HDR视频技术基础
图像处理·音视频
u0111026752 天前
工具页案例图如何编写 alt让图片说明与处理场景对应
java·前端·javascript·图像处理·人工智能·算法·ai作画
xailorliu2 天前
矩阵定性-正定负定不定半正定半负定
c++·opencv·线性代数·计算机视觉·矩阵
小燕子~~3 天前
Photoshop2026新版 AI 功能实测,看这一篇就够了
图像处理·人工智能·ai·aigc·photoshop
泡干脆面就番茄3 天前
MediaPipe人体感知全指南
opencv