当前位置: 首页 > news >正文

cv2.fillPoly()和cv2.polylines()

参数解释

cv2.fillPoly()cv2.polylines() 都是 OpenCV 的函数。功能是绘制多边形cv2.fillPoly()可绘制实心多边形, cv2.polylines() 可绘制空心多边形

  • cv2.fillPoly()用途:提取ROI
    • 可在黑色图像上,填充白色,作为掩膜(记为图1)。之后把图1与图2做按位与(cv2.bitwise_and())运算,仅保留多边形区域内的像素,其余区域置为黑色。

cv2.fillPoly()

该函数用于在图像上填充由多个多边形构成的区域,其基本语法如下:

cv2.fillPoly(img, pts, color, lineType=cv2.LINE_8, shift=0, offset=(0, 0))

各参数含义如下:

  • img:这是目标图像,即要在其上进行填充操作的图像。
  • pts:是一个包含多个多边形顶点数组的列表。每个多边形顶点数组的数据类型应为 numpy.ndarray,且数据类型为 int32,形状通常为 (n, 1, 2),其中 n 是该多边形的顶点数量。
  • color:指定填充的颜色。在 RGB 色彩空间中,它是一个三元组,例如 (255, 0, 0) 代表红色。
  • lineType(可选):用于指定边界线的类型,默认值是 cv2.LINE_8,还可以选择 cv2.LINE_4cv2.LINE_AA 等。
  • shift(可选):表示顶点坐标的小数位数,默认值为 0。
  • offset(可选):是一个可选的偏移量,默认值为 (0, 0),用于对顶点坐标进行偏移。

cv2.polylines()

此函数用于在图像上绘制多条折线,其基本语法如下:

cv2.polylines(img, pts, isClosed, color, thickness=1, lineType=cv2.LINE_8, shift=0)

参数:

  • img:同样是目标图像,即要在其上绘制折线的图像。
  • pts:和 cv2.fillPoly() 中的 pts 类似,是一个包含多个折线顶点数组的列表,每个顶点数组的数据类型为 numpy.ndarray,形状通常为 (n, 1, 2)
  • isClosed:这是一个布尔类型的参数。当为 True 时,折线的最后一个顶点会与第一个顶点相连,形成封闭的多边形;当为 False 时,折线不会闭合。
  • color:指定折线的颜色,同样是 RGB 色彩空间下的三元组。
  • thickness(可选):表示折线的线宽,默认值为 1。
  • lineType(可选):指定折线的类型,默认值是 cv2.LINE_8
  • shift(可选):表示顶点坐标的小数位数,默认值为 0。

折线类型

简单来讲,从模糊到清楚:cv2.LINE_4->cv2.LINE_8->cv2.LINE_AA

在这里插入图片描述

二、代码&运行结果

import cv2
import numpy as np

# 创建一个空白的黑色图像
image = np.zeros((500, 500, 3), dtype=np.uint8)
image_contour = image.copy()

# 定义多边形的顶点
pts = np.array([[100, 100], [200, 50], [300, 200],
               [250, 300], [150, 250]], np.int32)
print(f'pts.shape: {pts.shape}')
# 为了符合 cv2.fillPoly 的要求,需要将顶点数组的形状进行调整
pts = pts.reshape((-1, 1, 2))
print(f'pts.shape: {pts.shape}')
# 绘制多边形轮廓
cv2.polylines(image_contour, [pts], True, (0, 255, 0), 2)

# 显示绘制轮廓后的图像
cv2.imshow('Polygon Contour', image_contour)
cv2.waitKey(0)

# 填充多边形
cv2.fillPoly(image, [pts], (0, 255, 0))

# 显示填充后的图像
cv2.imshow('Filled Polygon', image)
cv2.waitKey(0)

cv2.destroyAllWindows()

运行结果:
填充一个空心多边形【其实是填充了直线】
在这里插入图片描述
填充一个实心
在这里插入图片描述

相关文章:

  • 【分布式】Hystrix 的核心概念与工作原理​
  • Java的设计模式详解
  • 【数论4】求解线性同余方程和方程组
  • FPGA | 等精度测频应用与实践
  • RSTP --- 快速生成树
  • 如何成功点亮LED灯并实现闪烁效果
  • ROS软路由多wifi多IP搭建一览表
  • 红黑树剖析
  • DirectX修复工具免费版下载安装教程(附安装包)
  • 蓝桥杯 XYZ
  • elementui中el-form自定义表单校验规则
  • Java后端开发(十八)-- 使用JAXB,将JavaBean转换XML文本
  • 基础知识专题整理-----持续更新
  • lib-zo,C语言另一个协程库,整理
  • leetcode0704. 二分查找-easy
  • 关于labview中路径的问题
  • 一款功能强大的手机使用情况监控工具
  • 探访 DINO 家族 Part 4:融合多模态大语言模型的视觉模型基础 RexSeek
  • 【计算机网络】记录一次校园网无法上网的解决方法
  • Android 地区选择器或者其他选择器
  • 怎么做钓qq密码网站/发稿软文公司
  • 制作微信网页的网站吗/搜狗推广登陆
  • 兰州响应式网站建设/许昌网络推广公司
  • 中山网站软件/西安网络推广外包公司
  • 福州集团网站建设/推广资源整合平台
  • 可编辑wordpress主题/长春关键词优化公司