为什么80%的码农都做不了架构师?>>>   

# -*- coding: utf-8 -*-
"""
图像分水岭分割图像
分水岭算法可以参考:http://baike.baidu.com/item/%E5%88%86%E6%B0%B4%E5%B2%AD%E7%AE%97%E6%B3%95
"""import numpy as np
import cv2
from matplotlib import pyplot as pltimg = cv2.imread('../../../datas/images/apple.jpg')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
ret, thresh = cv2.threshold(gray,0,255,cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)# 降噪处理
kernel = np.ones((3,3),np.uint8)
opening = cv2.morphologyEx(thresh,cv2.MORPH_OPEN,kernel, iterations = 2)# 确定背景
sure_bg = cv2.dilate(opening,kernel,iterations=3)# 查找前景
dist_transform = cv2.distanceTransform(opening,cv2.DIST_L2,5)
ret, sure_fg = cv2.threshold(dist_transform,0.7*dist_transform.max(),255,0)# 查找未确定区域
sure_fg = np.uint8(sure_fg)
unknown = cv2.subtract(sure_bg,sure_fg)# 标注
ret, markers = cv2.connectedComponents(sure_fg)
markers = markers+1# 将未确定区域置为0
markers[unknown==255] = 0# 执行分水岭
markers = cv2.watershed(img,markers)
img[markers == -1] = [255,0,0]cv2.imshow("img",img)cv2.waitKey()
cv2.destroyAllWindows()

转载于:https://my.oschina.net/wujux/blog/801938

Python OpenCV学习笔记之:分水岭算法分割图像相关推荐

  1. python做直方图-python OpenCV学习笔记实现二维直方图

    本文介绍了python OpenCV学习笔记实现二维直方图,分享给大家,具体如下: 官方文档 – https://docs.opencv.org/3.4.0/dd/d0d/tutorial_py_2d ...

  2. python opencv 直方图均衡_详解python OpenCV学习笔记之直方图均衡化

    本文介绍了python OpenCV学习笔记之直方图均衡化,分享给大家,具体如下: 官方文档 – https://docs.opencv.org/3.4.0/d5/daf/tutorial_py_hi ...

  3. OpenCV学习笔记(十六)——CamShift研究 OpenCV学习笔记(十七)——运动分析和物体跟踪Video OpenCV学习笔记(十八)——图像的各种变换(cvtColor*+)imgproc

    OpenCV学习笔记(十六)--CamShift研究 CamShitf算法,即Continuously Apative Mean-Shift算法,基本思想就是对视频图像的多帧进行MeanShift运算 ...

  4. OpenCV学习笔记(十七):图像修补:inpaint()

    OpenCV学习笔记(十七):图像修补:inpaint() inpaint()函数 使用区域邻域在图像中还原选定区域. void inpaint( InputArray src, // 表示要修复的图 ...

  5. OpenCV学习笔记(十):图像金字塔Pyramid和图像缩放:pyrDown(),pyrUp(),resize()

    OpenCV学习笔记(十):图像金字塔Pyramid和图像缩放:pyrDown(),pyrUp(),resize() 一.图像金字塔定义: 图像金字塔是图像中多尺度表达的一种,最主要用于图像的分割,是 ...

  6. OpenCV学习笔记(三):图像对比度、亮度调整源码

    OpenCV学习笔记(三):图像对比度.亮度调整源码 主函数: #include <opencv2/opencv.hpp>using namespace cv;using namespac ...

  7. opencv学习笔记10:阈值分割

    阈值分割 像素图 原始图像像素图 见下面 红色线:标注一条阈值线 二进制阈值化 首先设定一条阀值线 如127 大于127的像素点灰度值设为最大(如unit8的格式为255) 小于127的像素点灰度值设 ...

  8. 分水岭算法分割图像的原理概述及OpenCV代码实现

    图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 前面博文中提到的图像阈值化,图像边缘检测,图像轮 ...

  9. Opencv学习笔记(二) 提取图像中的水平线和垂直线

    提取图像中的水平线和垂直线属于基础的形态学操作的应用,原理:根据要提取图形来定义一个特定的结构元素,然后以这个结构相素去遍历图像,进行一系列形态学操作,以此过滤掉其他特征的图形,达到提取的效果. 示例 ...

最新文章

  1. asp.net中jQuery $post用法
  2. SQLServer2008创建新用户 转
  3. mysql---表所在数据库
  4. JESD204B的AXI4-Lite时序分析(对比SRIO的AXI4-Lite时序分析)
  5. 如何在使用Retry之后,Jenkins能够准确发送邮件的脚本
  6. python做excel表格柱状图_Python Excel 绘制柱形图
  7. Mybatis源码阅读(四):核心接口4.2——Executor(上)
  8. python表示空类型的关键字_Python 为什么没有 void 关键字?
  9. 基于java的订餐系统设计(含源文件)
  10. urllib2库的基本使用
  11. 使用FormData,进行Ajax请求并上传文件
  12. php对pdf关键字定位,如何在PDF文件中快速查找关键字
  13. java list初始容量_java中快速创建带初始值的List和Map实例
  14. java几种常见加密算法小试
  15. QT5入门学习(一)
  16. 【开发环境】运行Hitool出现“A Java Runtime Environment (JRE) or Java Development Kit (JDK)”错误处理
  17. PreferenceScreen使用
  18. Ipsec phase1 and phase2
  19. 淘宝订单API接口参数详解
  20. python去掉左边的空格_Python去除字符串左边空格

热门文章

  1. plsql生成awr报告
  2. 开源库的使用方法以及libjpeg的移植详解
  3. ACM第一天研究懂的AC代码——BFS问题解答——习题zoj2165
  4. CakePHP 2.x CookBook 中文版 第五章 控制器 之 组件
  5. MD5SHA加密util类(Java)
  6. 查看本地计算机已安装HOTFIX 几种方法
  7. 微信小程序 时间选择
  8. Java x和y之间的全部素数
  9. java猜数游戏有次数限制_超有趣的数学小游戏,陪孩子孩子边玩儿边学
  10. Python 懂车帝车友圈--分析与实现