cv2.polylines、cv2.fillPoly 和 多边形绘制分割结果Python函数(一)

这篇具有很好参考价值的文章主要介绍了cv2.polylines、cv2.fillPoly 和 多边形绘制分割结果Python函数(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

如果只是想撸代码,直接看下一篇:
https://blog.csdn.net/HaoZiHuang/article/details/127027469

先来铺垫几个用到的函数cv2.polylinescv2.fillPoly

以下内容部分摘自:
http://www.juzicode.com/opencv-python-polylines-puttext

先看一下代码吧:

import cv2
import numpy as np


img = np.zeros((512,512,3)) #白色背景
color=(0,255,0)             #绿色

# ------ 五角星的顶点 ------ 
pts = np.array([[70,190],
                [222,190],
                [280,61],
                [330,190],
                [467,190],
                [358,260],
                [392,380],
                [280,308],
                [138,380],
                [195,260]])
# pts = pts.reshape((-1, 1, 2))  # reshape为 10x1x2 的 numpy.ndarray
print(pts.shape)     # (10, 1, 2)

# ------ 绘制图形 ------ 
cv2.polylines(img,
              # [pts-20, pts+30],
              [pts],
              True,    # 是否闭合
              color,
              5)
 

# ------ 以下是显示三件套 ------
cv2.imshow('show',img)
cv2.waitKey()
cv2.destroyAllWindows()

cv2.polylines 的参数:

  • 绘制的画板图
  • 绘制的多边形列表
  • 是否闭合的bool
  • 颜色
  • 粗细

  • 这是第三个参数为 True (闭合) / False(不闭合) 的图:

cv2.polylines、cv2.fillPoly 和 多边形绘制分割结果Python函数(一)
不过有些标注的最后一个点和第一个点是相同的,这种情况下 False/True 都不影响,都会是闭合的,因为最后一个点和第一个点相同

  • 第四个参数是颜色注意是 BGR 的形式,(0, 0, 255) 是红色
  • 第五个参数是粗细,注意不能像画圆那样给 -1 来填充多边形,多边形填充有专用的函数 cv2.fillPoly
  • 接下来是最值得说的第二个参数,为啥是 [pts] 呢? 为啥是个列表呢? 要不我改成 [pts1, pts2] 试试?
    每次,这里就是可以传入多个形如[X, 1, 2] 的 np.ndarray

    我们这样做个实验:
    cv2.polylines(img,
                  [pts-20, pts+30],
                  True,   # 是否闭合
                  color,
                  5)
    

cv2.polylines、cv2.fillPoly 和 多边形绘制分割结果Python函数(一)
这样就绘制了两个多边形,但是颜色都是一样的,所以要绘制多个不同颜色的多边形,还是多次调用这个函数,而不是在这个列表传入多个array

  • 代码里有一行这个:
    # pts = pts.reshape((-1, 1, 2))  # reshape为 10x1x2 的 numpy.ndarray
    
    我注释掉了,我看好多人的博客,都有这一行,我就我试了一下不用这个操作,结果可以运行,有这个操作还是可以运行,就有些离谱吧,可能 opencv 旧版本需要这个操作???

OKOK, 终于把 cv2.polylines 说完了,接下来说这个 cv2.fillPoly , 他的用法就比较简单了:

import cv2
import numpy as np


img = np.zeros((512,512,3)) #白色背景
color=(0,0,255)             # 红色

#五角星
pts = np.array([[70,190],
                [222,190],
                [280,61],
                [330,190],
                [467,190],
                [358,260],
                [392,380],
                [280,308],
                [138,380],
                [195,260],
                [70,190]])


cv2.fillPoly(img,   # 原图画板
             [pts], # 多边形的点
             color=(0, 0, 255))

 
cv2.imshow('show',img)
cv2.waitKey()

简单用法之需要传入图片、多边形的点 和 颜色
cv2.polylines、cv2.fillPoly 和 多边形绘制分割结果Python函数(一)

看到这里你也许会想做这样的操作:

cv2.fillPoly(img,   # 原图画板
             [pts-20, pts+30], # 多边形的点
             color=(0, 0, 255))

你以为他的结果是这样的:
cv2.polylines、cv2.fillPoly 和 多边形绘制分割结果Python函数(一)

实际上的结果是这样的:
cv2.polylines、cv2.fillPoly 和 多边形绘制分割结果Python函数(一)
关于为啥是这样,我觉得图像学的知识可以给一个解释,应该是 多边形的扫描转换 那一节,感兴趣的诸位自己看看

下一篇来看多边形分割结果绘制的函数
https://blog.csdn.net/HaoZiHuang/article/details/127027469

(最近好烦啊,意识到一直在搞别人写的函数怎么用… 很少自己写,我就是一个掉包侠wwwwww)文章来源地址https://www.toymoban.com/news/detail-441468.html

到了这里,关于cv2.polylines、cv2.fillPoly 和 多边形绘制分割结果Python函数(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • [C++] opencv - fillPoly(填充多边形)函数介绍和使用场景

    fillPoly() 函数是OpenCV中用于绘制填充多边形的函数。函数原型如下: fillPoly() 函数适用于需要绘制填充多边形的场景,例如在图像上绘制一个封闭的图形、制作一个简单的遮罩等。   fillPoly() 函数是OpenCV中用于绘制填充多边形的函数。可以用来绘制实心三角形,实心矩形,实

    2024年02月19日
    浏览(120)
  • 基于C++ 的OpenCV绘制多边形,多边形多条边用不用的颜色绘制

    使用基于C++的OpenCV库来绘制多边形,并且为多边形的不同边使用不同的颜色,可以按照以下步骤进行操作: 首先,确保你已经安装了OpenCV库并配置好了你的开发环境。 导入必要的头文件: 创建一个空白的图像,然后绘制多边形,并为每条边选择不同的颜色: 在这个示例中,

    2024年02月13日
    浏览(55)
  • cesium学习记录08-鼠标绘制多边形

    上一篇学习了创建实体的一些基础知识,但有时还需要我们使用鼠标进行手动绘制,这一篇就来进行鼠标绘制实体的实现(点,线,矩形,圆,多边形)。 (这里需要掌握三个知识点,一是上一篇中的创建实体、二是鼠标事件、三是回调函数) 既然是鼠标绘制,自然离不开

    2024年02月12日
    浏览(45)
  • Openlayers实战:绘制点、线、圆、多边形

    Openlayers地图中,绘制图形是非常重要的一个功能。Openlayers主要使用draw类来绘制图形,在实际项目中经常会绘制点、线、多边形、矩形等。 下面的示例是绘制点、线、圆形、多边形。

    2024年02月12日
    浏览(52)
  • 用于跨中心多边形分割的任务相关特征补充

    a) 领域转移示意图 b) (i)原始数据分布;(ii)极端经典特征自适应;(iii)极端域不变特征自适应;(iv)我们的方法中的特征自适应。 来自不同中心的结肠镜检查图像通常表现出外观变化,使得在一个领域训练的模型无法很好地推广到另一个领域。 为了解决这个问题

    2024年02月04日
    浏览(35)
  • python opencv 绘制矩形、圆、线、多边形

    👨‍💻 个人简介: 深度学习图像领域工作者 🎉 总结链接:              链接中主要是个人工作的总结,每个链接都是一些常用demo,代码直接复制运行即可。包括:                     📌 1.工作中常用深度学习脚本                     📌 2.to

    2024年02月03日
    浏览(110)
  • 【OpenCV 例程 300篇】223. 特征提取之多边形拟合(cv.approxPolyDP)

    『youcans 的 OpenCV 例程200篇 - 总目录』 目标特征的基本概念 通过图像分割获得多个区域,得到区域内的像素集合或区域边界像素集合。我们把感兴趣的人或物称为目标,目标所处的区域就是目标区域。 特征通常是针对于图像中的某个目标而言的。图像分割之后,还要对目标区

    2024年02月04日
    浏览(50)
  • [游戏开发]Unity多边形分割为三角形_耳切法

    有个小需求是分割一下多边形,顺带记录一下。通常来说多边形的形状都比较复杂,不好进行操作,这个时候如果我们可以把一个多边形分隔为若干个三角形,回归到简单基础的形状就方便我们操作。三角形化在渲染显示中还是挺多用的。下文未列出,但涉及到的代码链接如

    2024年02月10日
    浏览(44)
  • Python OpenCV实现鼠标绘制矩形框和多边形

    目录 Python OpenCV实现鼠标绘制矩形框和多边形 1. OpenCV鼠标事件操作说明 (1)setMouseCallback函数说明 (2)回调函数onMouse说明 (3)event 具体说明: (4)flags 具体说明 2. OpenCV实现鼠标绘制矩形框和多边形框 (1)绘制矩形框 (2)绘制多边形 (3)键盘控制 3. 完整的代码 本篇将

    2024年02月06日
    浏览(76)
  • BoxPolyp:使用超粗边界框注释的提升广义多边形分割

    在本文中,提出了一种增强的BoxPolyp模型使用精确掩码和超粗框注释。在实践中,应用框注释来缓解先前息肉分割模型的过拟合问题,该模型通过迭代增强分割模型生成细粒度的息肉区域。 首先提出了一种融合滤波器采样(FFS)模块,用于从具有较少噪声的框注释中生成逐像

    2024年02月03日
    浏览(42)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包