OpenCV图像分割与提取(python)

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

   案例 ©Fu Xianjun. All Rights Reserved.

一、读取图像

知识储备:图像分割与提取的概念

        在图像处理的过程中, 经常需要从图像中将前景对象作为目标图像提取出来。例如无人驾驶技术, 我们关心的是周围的交通工具, 其他障碍物等, 而对于背景本身并不关注, 故而, 我们需要将这些东西从图片(视频)中提取出来, 而忽略那些只有背景的图像。

知识储备:常见的图像分割方法

1. 基于阈值的分割方法:全局阈值法、局部阈值法等

2. 基于区域的分割方法:分水岭方法、区域生长法等

3. 基于边缘的分割方法:Canny边缘检测、轮廓检测等 

4. 基于特定理论的分割方法:聚类、模糊集等(机器学习)

5. 基于神经网络的分割方法:????

知识储备:分水岭算法的概念

        图像的灰度空间很像地球表面的整个地理结构,每个像素的灰度值代表高度。其中的灰度值较大的像素连成的线可以看做山脊,也就是分水岭。        

当水平面上升到一定高度时,水就会溢出当前山谷,可以通过在分水岭上修大坝,从而避免两个山谷的水汇集,这样图像就被分成2个像素集,一个是被水淹没的山谷像素集,一个是分水岭线像素集。最终这些大坝形成的线就对整个图像进行了分区,实现对图像的分割。

知识储备:分水岭算法的步骤

知识储备:鼠标交互

opencv的鼠标交互操作主要通过两个函数实现: 第一个是cv2.setMouseCallback(windowName, onMouse [, param])

第二个是setMouseCallback()的第二个参数,称为鼠标回调函数onMouse(event, x, y, flags, param)

知识储备:区域生长算法的概念

选取某个种子点(一般实际交互时就是鼠标点击的位置),从图像种子点位置开始,将种子点相邻的符合某个阈值范围内的像素添加到生长区域中,接着判断下一个像素点,直到没有可以符合条件的像素为止,此时分割完毕。

二、分水岭算法

       1、二值化

2、形态学操作(移除噪声)

3、距离变换

                剩下的区域不确定是硬币还是背景,这些区域通常在前景和背景接触的区域(或者两个不同硬币接触的区域),我们称之为边界。

通过分水岭算法应该能找到确定的边界。由于硬币之间彼此接触,我们使用另一个确定前景的方法,就是带阈值的距离变换。

        下面左边的图为得到的距离转换图像,其中每个像素的值为其到最近的背景像素(灰度值为0)的距离,可以看到硬币的中心像素值最大(中心离背景像素最远)。对其进行二值处理就得到了分离的前景图(下面中间的图),白色区域肯定是硬币区域,而且还相互分离,下面右边的图为之前的膨胀图减去中间这个表示前景的图。

三、鼠标交互

四、区域生长算法

1、固定种子点的区域生长算法

OpenCV 图像分割提取 课前知识储备 图像分割提取的概念 在图像处理的过程中, 经常需要从图像中将前景对象作为目标图像提取出来。例如无人驾驶技术, 我们关心的是周围的交通工具, 其他障碍物等, 而对于背景本身并不关注, 故而, 我们需要将这些东西从图片(视频)提取出来, 而忽略那些只有背景的图像。 常见的图像分割方法 1. 基于阈值的分割方法:全局阈值法、局部阈值法等 √ 2. 基于区域的分割方法:分水岭方法、区域生长法等 3. 基于边缘的分割方法:Canny边缘检测、轮廓检测等 √ 4. 基于特定理论的分割方法 阅读详情

相关推荐

Pythonopencv库进行图像分割

基于聚类的分割是一种常用的无监督分割方法,其原理是将图像中的像素点聚类成若干个簇,每个簇代表一个分割区域。基于边缘的分割是一种常用的分割方法,其原理是通过检测图像中的边缘信息将图像分割成多个区域。上述代码中,图像分割是将图像分成若干个区域,使得每个区域内的像素具有相似的特征,不同区域之间的像素特征差异较大。图像分割是将一幅图像分割成多个区域或者对象的过程。除此之外,还有许多其他的图像分割方法,如基于边缘的Canny算法、基于区域生长的分水岭算法等,可以根据不同的应用场景选择合适的方法进行分割

zhangzhechun的专栏 2144

【学习OpenCV4】分水岭算法详解

本文分享内容来自图书《学习OpenCV 4:基于Python的算法实战》,该书内容如下: 第1章 OpenCV快速入门; 第2章 图像读写模块imgcodecs; 第3章 核心库模块core; 第4章 图像处理模块imgproc(一); 第5章 图像处理模块imgproc(二); 第6章 可视化模块highgui; 第7章 视频处理模块videoio; 第8章 视频分析模块video; 第9章 照片处理模块photo; 第10章 2D特征模块features2d; 第11章 相机标定三维重建模块calib

lxiao428的博客 1685

OpenCV图像处理应用(面向Python)之图像分割提取

Fu Xianjun. All Rights Reserved 图像分割提取 在图像处理的过程中,经常需要从图像中将前景对象作为目标图像分割或者提取出来。例如,在视频监控中,观测到的是固定背景下的视频内容,而我们对背景本身并无兴趣,感兴趣的是背景中出现的车辆、行人或者其他对象。我们希望将这些对象从视频中提取出来,而忽略那些没有对象进入背景的视频内容。 分水岭算法的概念 图像的灰度空间很像地球表面的整个地理结构,每个像素的灰度值 代表高度。其中的灰度值较大的像素连成的线可以看做山脊,也就 是分水岭。 分

weixin_57305931的博客 757

Python图像分割提取OpenCV库实践

图像分割提取是计算机视觉中常见的任务之一,它可以帮助我们从图像中提取感兴趣的目标或区域。在Python中,我们可以利用OpenCV库提供的方法来实现这些功能。本文将详细介绍如何使用OpenCV库进行图像分割提取,并附上相应的源代码。首先,我们需要安装OpenCV库。安装完成后,我们可以导入OpenCV库并开始图像分割提取的实践。

TechRoarX的博客 365

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

本文介绍了使用 OpenCV 进行图像分割的几种常用手段,包括阈值分割、边缘分割、K均值聚类分割以及分水岭分割

qq_52309640的博客 6万+

OpenCVPython 分水岭算法图像分割

文章目录一、前言二、cv2.distanceTransform(src, distanceType, maskSize)三、基于标记的分水岭分割功能四、示例代码 一、前言 分水岭算法是一种图像区域分割法,在分割的过程中,它会把跟临近像素间的相似性作为重要的参考依据,从而将在空间位置上相近并且灰度值相近的像素点互相连接起来构成一个封闭的轮廓,封闭性是分水岭算法的一个重要特征。 其他图像分割方法,如阈...

红叶谷 wsp_1138886114的博客 2万+

opencv图像分割python毕业设计_pythonopencv完成图像分割并进行目标物的提取

运行平台: WindowsPython版本: Python3.xIDE: Spyder今天我们想实现的功能是对单个目标图片的提取如图所示:图片读取###############头文件import matplotlib.pyplot as pltimport osimport cv2import numpy as npfrom PIL import Image#from skimage import...

weixin_39852491的博客 1009

opencv 图像分割提取(python)

图像分割提取图像分割提取用分水岭算法实现图像分割提取算法原理相关函数介绍分水岭算法图像分割实例交互式前景提取 图像分割提取 图像中将前景对象作为目标图像分割或者提取出来。 对背景本身并无兴趣 分水岭算法及GrabCut算法对图像进行分割提取。 用分水岭算法实现图像分割提取 分水岭算法将图像形象地比喻为地理学上的地形表面,实现图像分割,该算法非常有效。 算法原理 任何一幅灰度图像,都可以被看作是地理学上的地形表面,灰度值高的区域可以被看成是山峰,灰度值低的区域可以被看成是山谷。 左图是原始图像,右

wkk的博客 1万+

OpenCV4-python 学习笔记 之 图像分割提取

简介 : 在图像处理的过程中, 经常需要从图像中将前景对象作为目标图像提取出来。例如无人驾驶技术, 我们关心的是周围的交通工具, 其他障碍物等, 而对于背景本身并不关注, 故而, 我们需要将这些东西从图片(视频)提取出来, 而忽略那些只有背景的图像。 1 分水岭算法实现图像的分割提取 该算法将图像形象的比喻为地理学上的地形平面(等高线地形图), 从而实现图像的分割 1.1 算法原理 对于一幅灰...

k903161661的博客 4629

python图像分割识别_pythonopencv完成图像分割并进行目标物的提取

运行平台: WindowsPython版本: Python3.xIDE: Spyder今天我们想实现的功能是对单个目标图片的提取如图所示:图片读取###############头文件import matplotlib.pyplot as pltimport osimport cv2import numpy as npfrom PIL import Image#from skimage import...

weixin_39982933的博客 629

python dicom图像分割_pythonopencv完成图像分割并进行目标物的提取

运行平台: WindowsPython版本: Python3.xIDE: Spyder今天我们想实现的功能是对单个目标图片的提取如图所示:图片读取###############头文件import matplotlib.pyplot as pltimport osimport cv2import numpy as npfrom PIL import Image#from skimage import...

weixin_39632293的博客 192

pythonopencv完成图像分割,并且完成每一个目标物的提取

运行平台: Windows Python版本: Python3.x IDE: Spyder 今天我们想实现的功能是对单个目标图片的提取如图所示: 图片读取 ###############头文件 import matplotlib.pyplot as plt import os import cv2 import numpy as np from PIL import Image #from sk...

qq_43534932的博客 1万+

PythonOpenCV 提取图像特定目标区域-图像分割【原创】

OpenCV中,一般转换图像格式为HSV格式(默认格式为BGR),再进行指定颜色的提取。 直接使用RGB提取颜色不推荐 HSV格式的介绍:HSV 为色相,饱和度,明度。 1.将一副图像从rgb颜色空间转换到hsv颜色空间 hsv = cv2.cvtColor(rgb_image, cv2.COLOR_BGR2HSV) 2.然后利用cv2.inRange函数设阈值,去除背景部分 ...

Monster_H7的博客 8996

OpenCV-Python】——单/多模板匹配&分水岭算法图像分割&图像金字塔&交互式前景提取

由于是初学者可能很多地方没有总结完全或者有误,后续深入学习后会不断回来该删,也欢迎各位朋友指正!下次学习特征检测!

weixin_51658186的博客 2463

[OpenCV] 图像分割OpenCV + Python 提取米粒轮廓 rice.png

使用形态学操作,原图像-腐蚀得到轮廓,实际上就是一个求内部梯度的操作 import numpy as np import cv2 as cv from matplotlib import pyplot as plt # 1 rice = cv.imread('rice.png', cv.IMREAD_GRAYSCALE) kernel = np.ones((5, 5), np.uint8) rice_ero = cv.erode(rice, kernel) rice_diff = cv.subtract(

江南蜡笔小新 1933

OpenCV_GrubCut]实现交互式图像分割提取前景--Python抠图

这部分内容是几个月前做的项目,一直没时间整理记录,在这里随便写一下方便日后回忆.   "GrabCut":使用迭代图形切割的交互式前景提取工具,用于在分割任务中按像素标记图像数据. OpenCV官网例子 算法过程:     首先,输入矩形框,矩形框外部区域都是背景。内部一定包含前景。     电脑对输入图像进行初始化,标记前景和背景的像素。     使用高斯混合模型(GMM)对前景和...

图特摩斯科技-博客 8660

python实现使用 OpenCV 中的基于边缘的图像分割算法(例如 Canny 边缘检测)来提取图像中的边缘信息,再使用形态学操作(例如闭运算)来连接边缘,使得图像中的细胞被分割成为单独的区域。

好的,使用 PythonOpenCV 实现基于边缘的图像分割以及形态学操作的步骤如下: 首先,你需要安装 OpenCV,在命令行中输入 pip install opencv-python 即可安装。 然后,导入需要的库,代码如下: import cv2 import numpy as np 接下来,使用 cv2.imread 函数读取图像。 img = cv2.imread('...

weixin_35749786的博客 1154

【学习OpenCV4】Grabcuts图像分割算法详解

本文分享内容来自图书《学习OpenCV 4:基于Python的算法实战》,该书内容如下: 第1章 OpenCV快速入门; 第2章 图像读写模块imgcodecs; 第3章 核心库模块core; 第4章 图像处理模块imgproc(一); 第5章 图像处理模块imgproc(二); 第6章 可视化模块highgui; 第7章 视频处理模块videoio; 第8章 视频分析模块video; 第9章 照片处理模块photo; 第10章 2D特征模块features2d; 第11章 相机标定三维重建模块calib

lxiao428的博客 2087
下一篇: OpenCV图像轮廓2(python)
Boombl
博客等级 码龄5年 2粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值