当前位置: 首页 > news >正文

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

MeanShift

  • 1. 基本概念
  • 2.代码示例

1. 基本概念

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

语法:pyrMeanShiftFiltering(img, double sp, double sr, maxLevel = 1, termcrit = TermCriteria…)
img:要平滑的图像
sp:检测半径,越大模糊越高,效果越好。
sr:色彩幅值,越大,连成一片的可能性越大。
剩下的参数都为默认值就可以。

2.代码示例

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

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

http://www.lryc.cn/news/100714.html

相关文章:

  • 【Rust 基础篇】Rust Trait 实现:灵活的接口抽象
  • 【嵌入式Linux项目】基于Linux的全志H616开发板智能家居项目(语音控制、人脸识别、安卓APP和PC端QT客户端远程操控)有视频功能展示
  • ElasticSearch基础篇-条件查询与映射
  • 大模型部署框架 FastLLM 实现细节解析
  • Flutter ios真机调试连接断开后应用闪退
  • 序列化,反序列化之实例
  • 2022年全国职业院校技能大赛(高职组)“软件测试”赛项竞赛任务书
  • 第18节:R语言分析:临床安全性数据的数据分析
  • 36.悬浮板
  • BLE基础理论/Android BLE开发示例
  • rocketmq 5.13任意时间延迟消息
  • 小程序picker 在苹果手机不兼容 bug,按month时在iPhone 显示不正确及自动定位时间问题
  • 区块链服务网络的顶层设计与应用实践
  • tomcat日志输出乱码
  • Form1单例模式与互斥锁
  • MySQL | 常用命令示例
  • 常见网关对比
  • 机器学习动量优化算法笔记
  • asp.net与asp.net优缺点及示例
  • php 年月日 分组分页
  • flutter开发实战-请求dio设置Cookie
  • C语言第十一课--------操作符的使用与分类-------基本操作
  • 2,继承、内联函数、虚继承、友元、构造析构函数、初始化列表
  • Mkdocs中利用Js实现大小圈鼠标拖动样式
  • pytorch(6)——神经网络基本骨架nn.module的使用
  • 论文精读之BERT
  • 实战:Docker+Jenkins+Gitee构建CICD流水线
  • 7.25 Qt
  • P1420 最长连号
  • UVA-1354 天平难题 题解答案代码 算法竞赛入门经典第二版