python opencv实现找到图像的轮廓,填充颜色

这篇具有很好参考价值的文章主要介绍了python opencv实现找到图像的轮廓,填充颜色。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

我想找到图片中的闭合圈,然后填充颜色

所需要的cv函数:

1。OpenCV提供的findContours()方法可以通过计算图像梯度来判断出图像的边缘,然后将边缘的点封装成数组返回。

contours,hierarchy = cv2.findContours(image,mode,methde)

  image: 为检测的图像,必须是8位单通道二值图像。如果原图为彩色的,必须转为灰度图,并通过二值化阈值处理。

  mode: 轮廓的检索模式,具体如下。

参数值 含义
cv2.RETR_EXTERNAL 只检测外轮廓
cv2.RETR_LIST                 检测所有轮廓,但不建立层次关系
cv2.RETR_CCOMP 检测所有轮廓,并建立俩级层次关系
cv2.RETR_TREE 检测所有轮廓,并建立树状结构的层次关系

  methode:检测轮廓时使用的方法,具体如下

参数值 含义
cv2.CHAIN_APPROX_NONE 存储轮廓上的所有点
cv2.CHAIN_APPROX_SIMPLE 只保存水平,垂直或对角线轮廓的端点
cv2.CHAIN_APPROX_TC89_L1 Ten-Chinl 近似算法中的一种
cv2.CHAIN_APPROX_TC89_KCOS Ten-Chinl 近似算法中的一种

返回值:

 contours:检测出的所有轮廓,list类型,每一个元素都是某个轮廓的像素坐标点

 hierarchy:轮廓之间的层次关系

2 。 OpenCV提供了drawContours()方法专门来绘制这些轮廓。drawContours()方法如下:

image = cv2.drawContours(image, contours, contourIdx, color, thickness, lineTypee, hierarchy, offse)

参数说明:

image:被绘制轮廓的原始图像,可以是多通道图像

contours:findContours()方法得出的轮廓列表

contourIdx:绘制轮廓的索引,如果为-1则绘制所有轮廓

color:绘制的颜色,使用BGR格式

thickness:可选参数,画笔的粗细程度,如果为 -1 则绘制实心圆

lineTypee:可选参数,绘制轮廓的线型

hierarchy:可选参数,findContours()方法得出的层次关系

maxLevel:可选参数,绘制轮廓的层次深度,最深绘制第maxlevel 层

offse:可选参数,偏移量,可以改变绘制结果的位置

返回值:

image:同参数中的image,方法执行后原始图像中就包含绘制的轮廓了,可以 不适用此返回值保存结果。

原图

python opencv实现找到图像的轮廓,填充颜色

 填充后的图像

python opencv实现找到图像的轮廓,填充颜色

程序实现文章来源地址https://www.toymoban.com/news/detail-442695.html

import cv2
import numpy as np
img = cv2.imread('1/2.jpg')

# 反转 黑白变换  一般不需要这一步,我这张图片是在找轮廓的时候有图像的四个边也会
# 被当成轮廓,所以我先反转一下黑白交换

black = 255 - img

# 彩图转为灰度图
gray = cv2.cvtColor(black, cv2.COLOR_BGR2GRAY)
# 转为二值图像
t, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)

# 找到所有轮廓,记录轮廓的每一个点
contours, hierarchy = cv2.findContours(binary, cv2.RETR_LIST, cv2.CHAIN_APPROX_NONE)

area = []
for k in range(len(contours)):
    area.append(cv2.contourArea(contours[k]))
# 轮廓索引
max_idx = np.argsort(np.array(area))
mask = img.copy()
# 按轮廓索引填充颜色
for idx in max_idx:
    # 填充轮廓
    mask = cv2.drawContours(mask, contours, idx, (0, 0,255), cv2.FILLED)

cv2.imshow('mask', mask)
cv2.waitKey()
cv2.destroyAllWindows()

到了这里,关于python opencv实现找到图像的轮廓,填充颜色的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity绘画功能实现(包含涂鸦、颜色一键填充、撤销操作、保存图像)

    项目需要,要实现在图像上进行绘画,看来网上的很多Unity绘画代码,感觉挺复杂的而且功能不全,这里我自己实现了一个在图像上进行绘画的代码,包含了涂鸦、一键填充颜色、撤销上一次操作、保存图片功能。 本项目是在http://www.qb5200.com/article/391439.html上进行了魔改。 左

    2024年02月14日
    浏览(43)
  • 【Python】OpenCV-图像轮廓检测初学

    在图像处理领域中,轮廓检测是一项重要的任务,用于寻找并标定图像中的物体边缘。本文将介绍如何使用OpenCV库进行图像轮廓检测,并展示一个简单的示例代码。代码中的注释将详细解释每一步的操作。 图像轮廓检测是图像处理中的一项关键技术,可用于检测物体的形状、

    2024年02月21日
    浏览(47)
  • Python-OpenCV中的图像处理-图像轮廓

    轮廓可以简单认为成将连续的点(连着边界)连在一起的曲线,具有相同的颜色或者灰度。轮廓在形状分析和物体的检测和识别中很有用。 为了更加准确,要使用二值化图像。在寻找轮廓之前,要进行阈值化处理或者 Canny 边界检测。 查找轮廓的函数会修改原始图像。如果你

    2024年02月13日
    浏览(66)
  • OpenCV(图像处理)-基于Python-轮廓查找

    一个图像中具有相同颜色或强度(灰度图)的连续点所组成的集合,就是轮廓。轮廓可用于图形分析、物体的识别与检测等等。 在图像中,为了防止轮廓边缘强弱不明显,需要先对图像进行二值化或Canny操作(一般改为黑底白字), 画轮廓时会修改输入的图像。 查找图形的

    2024年02月09日
    浏览(59)
  • 【OpenCV实现图像:使用OpenCV进行物体轮廓排序】

    在图像处理中,经常需要进行与物体轮廓相关的操作,比如计算目标轮廓的周长、面积等。为了获取目标轮廓的信息,通常使用OpenCV的findContours函数。然而,一旦获得轮廓信息后,可能会发现轮廓的顺序是无序的,如下图左侧所示: 在这个图中,每个轮廓都被找到,但它们的

    2024年02月03日
    浏览(44)
  • 【OpenCV实现平滑图像金字塔,轮廓:入门】

    文章内容的概要: 平滑图像金字塔: 轮廓: 使用图像金字塔去创造一个新的水果,“橘果(Orapple)” 函数:cv.pyrUp(), cv.pyrDown() 通常,我们处理图像时使用的是固定分辨率。然而,在某些情况下,我们需要在不同的分辨率下处理同一张图像。例如,在搜索图像中的某些内容(

    2024年02月08日
    浏览(49)
  • opencv-python3 | cv2.findContours()检测图像中物体轮廓

    轮廓可以简单地理解为连接所有连续点(沿物体边界)的曲线,这些点通常具有相同的颜色或强度。 轮廓在图像分析中具有重要意义,是物体形状分析和对象检测和识别的有用工具,是理解图像语义信息的重要依据。 通常,为了提高物体轮廓检测的准确率,首先要将彩色图

    2024年02月05日
    浏览(50)
  • OpenCV函数应用:基于二值图像的三种孔洞填充方法记录(附python,C++代码)

    函数系列: OpenCV函数简记_第一章数字图像的基本概念(邻域,连通,色彩空间) OpenCV函数简记_第二章数字图像的基本操作(图像读写,图像像素获取,图像ROI获取,图像混合,图形绘制) OpenCV函数简记_第三章数字图像的滤波处理(方框,均值,高斯,中值和双边滤波) OpenC

    2024年02月05日
    浏览(54)
  • Python-OpenCV中的图像处理-颜色空间转换

    在 OpenCV 中有超过 150 中进行颜色空间转换的方法。但是你以后就会 发现我们经常用到的也就两种: BGR G r a y 和 B G R Gray 和 BGR G r a y 和 BGR HSV。 注意:在 OpenCV 的 HSV 格式中, H(色彩/色度)的取值范围是 [0, 179],S(饱和度)的取值范围 [0, 255], V(亮度)的取值范围 [0,

    2024年02月13日
    浏览(43)
  • 7.OpenCV-图像轮廓

    1.通过OpenCV的findContours可以很方便的找到图片中内容的轮廓。 2.为了提取轮廓有更高的准确率,在提取轮廓前,需要对图片进行预处理(二值+阈值),只保留感兴趣的图像。 3.通过计算轮廓面积与外接矩形或外接圆的面积,可以找到轮廓特征,进一步筛选出感兴趣的轮廓。

    2024年02月09日
    浏览(66)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包