这里主要基于 OpenCV 和 Scikit-learn 实现四种图像分割:

基于 K-means
基于 Contour Detection
基于 Thresholding
基于 Color Masking HSV颜色空间,就不演示了。
HSV颜色空间阈值调节器在我的opencv工具内

原图:

K-means

import numpy as np
import cv2def cv_show(neme, img):cv2.namedWindow(neme, cv2.WINDOW_NORMAL)cv2.imshow(neme, img)cv2.waitKey(0)cv2.destroyAllWindows()path = 'image2.jpg'
img = cv2.imread(path)img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
twoDimage = img.reshape((-1, 3))
twoDimage = np.float32(twoDimage)criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 10, 1.0)
K = 2
attempts = 10# Kmeans
ret, label, center = cv2.kmeans(twoDimage, K, None, criteria, attempts, cv2.KMEANS_PP_CENTERS)
center = np.uint8(center)
res = center[label.flatten()]
result_image = res.reshape((img.shape))
cv_show('neme', result_image)

效果:

Contour Detection

path = 'image2.jpg'
img = cv2.imread(path)
img = cv2.resize(img, (256, 256))# 图像预处理
gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
_, thresh = cv2.threshold(gray, np.mean(gray), 255, cv2.THRESH_BINARY_INV)
edges = cv2.dilate(cv2.Canny(thresh, 0, 255), None)# 轮廓检测
cnt = sorted(cv2.findContours(edges, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)[-2], key=cv2.contourArea)[-1]  # 轮廓检测与排序
mask = np.zeros((256, 256), np.uint8)
masked = cv2.drawContours(mask, [cnt], -1, 255, -1)# 区域分割
dst = cv2.bitwise_and(img, img, mask=mask)
segmented = cv2.cvtColor(dst, cv2.COLOR_BGR2RGB)
cv_show('neme', segmented)

Thresholding

pip install scikit-image
import numpy as np
from skimage.filters import threshold_otsu
import cv2path = 'image2.jpg'
img = cv2.imread(path)img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_RGB2GRAY)def filter_image(image, mask):r = image[:, :, 0] * maskg = image[:, :, 1] * maskb = image[:, :, 2] * maskreturn np.dstack([r, g, b])thresh = threshold_otsu(img_gray)  # 找阈值
img_otsu = img_gray < thresh
filtered = filter_image(img, img_otsu)
cv_show('neme', filtered)

效果:

OpenCV简单图像分割相关推荐

  1. Python 计算机视觉(十二)—— OpenCV 进行图像分割

    参考的一些文章以及论文我都会给大家分享出来 -- 链接就贴在原文,论文我上传到资源中去,大家可以免费下载学习,如果当天资源区找不到论文,那就等等,可能正在审核,审核完后就可以下载了.大家一起学习,一起 ...

  2. OpenCV-Python实战(9)——OpenCV用于图像分割的阈值技术

    OpenCV-Python实战(9)--OpenCV用于图像分割的阈值技术 0. 前言 1. 阈值技术简介 2. 简单的阈值技术 2.1 阈值类型 2.2 简单阈值技术的实际应用 3. 自适应阈值算法 ...

  3. OpenCV简单的过滤器平滑的实例(附完整代码)

    OpenCV简单的过滤器平滑的实例 OpenCV简单的过滤器平滑的实例 OpenCV简单的过滤器平滑的实例 #include <iostream> #include "openc ...

  4. OpenCV简单的几何绘图的实例(附完整代码)

    OpenCV简单的几何绘图的实例 OpenCV简单的几何绘图的实例 OpenCV简单的几何绘图的实例 #include <opencv2/core.hpp> #include <op ...

  5. OpenCV各向异性图像分割anisotropic image segmentation的实例(附完整代码)

    OpenCV各向异性图像分割anisotropic image segmentation的实例 OpenCV各向异性图像分割anisotropic image segmentation的实例 Open ...

  6. 用opencv简单创建单色图片并保存

    用opencv简单创建图片 主要调用一些API来简单实现,包含部分数组知识(一个opencv图像是.array类型的二维或多维数组) // # numpy是python的一种开源数值计算扩展 impo ...

  7. 图像存储方式及使用OpenCV简单处理图像

    一.目的 简述图像存储方式及使用OpenCV简单处理图像. 二.图像存储方式 2.1.YUV 2.1.1.简介 YUV是编译true-color颜色空间(color space)的种类,Y'UV, Y ...

  8. Android之OpenCv简单人脸识别功能(Bitmap)

    Android之OpenCv简单人脸识别功能 OpenCv的下载 下载地址 - https://opencv.org/releases/ doc 文档目录 samples 示例代码 sdk 编译后的动 ...

  9. opencv 彩色图像分割(inrange)

    opencv 彩色图像分割(inrange) 原文地址: https://www.cnblogs.com/chenzhefan/p/7648433.html 灰度图像大多通过算子寻找边缘和区域生长融合 ...

最新文章

  1. 源代码从 300 行到 172,000 行,它用了 23 年
  2. 45本互联网圣经级别书籍!包邮送到家!一书在手,天下我有!
  3. SBB:石油污染土壤微生物群落构建与生物多样性研究(一作解读)
  4. 动态规划走楼梯_动态规划问题为什么要画表格?
  5. python处理excel文件-使用Python进行Excel文件处理
  6. hdu4876 深搜+(随机枚举剪枝)
  7. python -归并排序
  8. 在网页中插入百度地图(实例)
  9. mysql中合并函数_MYSQL分组合并函数
  10. class12_pack_grid_place 放置位置
  11. Nginx学习总结(3)——Nginx配置及应用场景之高级配置
  12. 软件架构设计_架构师内功心法,软件架构设计的七大原则精选案例
  13. maven工具使用json-lib时,JSONArray.fromObject()不能执行的解决方案
  14. Java测试类的创建
  15. 三坐标检测之报告查看T值
  16. [JZOJ6080]【GDOI2019模拟2019.3.23】IOer【生成函数】【数学】
  17. mysql lpad 列_mysql的lpad函数
  18. 【火炉炼AI】机器学习050-提取图像的Star特征
  19. 【有利可图网】PS实战系列:制作树林与文字结合的创意文字效果
  20. androidBasic

热门文章

  1. 多分类中accuary与micro F1-score的恒等性
  2. JAVA 基本数据结构--数组、链表、ArrayList、Linkedlist、hashmap、hashtab等
  3. python鞋子_Micropython 鞋码匹配仪(标题图与内容无关)
  4. 淘宝服务商怎么入驻(入驻淘宝需要什么条件)
  5. Java中关于数组的初始化方式
  6. Matlab中绘制颜色渐变曲线
  7. MySQL查询近12个月数据,无则补0
  8. Multiple keywords with name ‘Capture Page Screenshot‘ found. Give the full name of the keyword you w
  9. 钛媒体2022 EDGE AWARDS全球创新评选之「年度最佳企业服务品牌」揭榜
  10. 杭州电子科技大学研究生计算机专业目录,杭州电子科技大学2017年硕士计算机学院招生目录.pdf...