使用OpenCV的函数polylines()绘制多条相连的线段和多边形;使用函数fillPoly()绘制带填充效果的多边形

本文主要是介绍使用OpenCV的函数polylines()绘制多条相连的线段和多边形;使用函数fillPoly()绘制带填充效果的多边形,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

函数polylines()可用来根据点集绘制多条相连的线段,也可用来绘制多边形。

函数polylines()有两种原型,这里只向大家介绍比较常用的那种原型。

函数polylines()的C++原型如下:

void cv::polylines(InputOutputArray img,const Point *const * pts,const int * npts,int ncontours,bool isClosed,const Scalar & color,int thickness = 1,int lineType = LINE_8,int shift = 0 )

函数polylines()的Python原型如下:

img=cv.polylines(img, pts, isClosed, color[, thickness[, lineType[, shift]]])

函数polylines()的参数意义如下:
img—绘制的多条相连线段或多边形所在的图像。
pts—存放点集坐标的二维数组,它是一个指针的指针,要注意的是在Python-OpenCV中,其中每一个坐标的数据类型为int32,而不能为常用的uint8。
npts—代表有几组点集。
ncontours—代表有内个轮廓。
isClosed—是否把绘制的多条线段首尾相连,显示,如果要绘制多边形,则这个参数值该置为true。
color—线条的颜色,用三通道表示。
thickness—线条的粗细,这里不能取负值。
lineType—线条的类型,默认值为LINE_8。
shift—坐标值的小数位数。

函数fillPoly()用于在图像上绘制带填充效果的多边形。

函数fillPoly(也)有两种原型,这里也只向大家介绍比较常用的那种原型。

C++原型如下:

void cv::fillPoly(InputOutputArray img,const Point ** pts,const int * npts,int ncontours,const Scalar & color,int lineType = LINE_8,int shift = 0,Point offset = Point() )

Python原型如下:

img=cv.fillPoly(img, pts, color[, lineType[, shift[, offset]]])

参数意义如下:
img—绘制的多边形所在的图像。
pts—存放多边形顶点坐标的二维数组,它是一个指针的指针,要注意的是在Python-OpenCV中,其中每一个坐标的数据类型为int32,而不能为常用的uint8。
npts—代表有几组点集。
ncontours—代表有内个轮廓。
color—线条的颜色,用三通道表示。
lineType—线条的类型,默认值为LINE_8。
shift—坐标值的小数位数。
offset—所有多边形顶点坐标的偏移量。

这两个函数的Python示例代码如下:

# -*- coding: utf-8 -*-
# 出处:昊虹AI笔记网(hhai.cc)
# 用心记录计算机视觉和AI技术# 博主微信/QQ 2487872782
# QQ群 271891601
# 欢迎技术交流与咨询# OpenCV的版本为4.4.0import numpy as np
import cv2 as cvif __name__ == '__main__':img1 = np.zeros((200, 400, 3), dtype='uint8')img2 = np.zeros((200, 400, 3), dtype='uint8')img3 = np.zeros((200, 400, 3), dtype='uint8')pts = np.array([[150, 33], [263, 40], [330, 100], [321, 180], [118, 90]], dtype='int32')# 使用函数polylines()绘制多边形cv.polylines(img1, [pts], True, (255, 0, 0))# 使用函数polylines()绘制多条线段cv.polylines(img2, [pts], False, (255, 0, 0))# 使用函数fillPoly()绘制带填充效果的多边形cv.fillPoly(img3, [pts], (255, 0, 0))cv.imshow('img1', img1)cv.imshow('img2', img2)cv.imshow('img3', img3)cv.waitKey(0)cv.destroyAllWindows()

运行结果如下:
在这里插入图片描述
这两个函数在C++环境下的示例代码要复杂些,因为牵涉到指针的指针。
如果需要C++示例代码,
请访问本博文的原文获取,
本博文原文链接如下:

https://www.hhai.cc/thread-176-1-1.html

这两个函数的C++代码运行结果如下:
在这里插入图片描述

这篇关于使用OpenCV的函数polylines()绘制多条相连的线段和多边形;使用函数fillPoly()绘制带填充效果的多边形的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/209734

相关文章

使用Python实现可恢复式多线程下载器

《使用Python实现可恢复式多线程下载器》在数字时代,大文件下载已成为日常操作,本文将手把手教你用Python打造专业级下载器,实现断点续传,多线程加速,速度限制等功能,感兴趣的小伙伴可以了解下... 目录一、智能续传:从崩溃边缘抢救进度二、多线程加速:榨干网络带宽三、速度控制:做网络的好邻居四、终端交互

Python中注释使用方法举例详解

《Python中注释使用方法举例详解》在Python编程语言中注释是必不可少的一部分,它有助于提高代码的可读性和维护性,:本文主要介绍Python中注释使用方法的相关资料,需要的朋友可以参考下... 目录一、前言二、什么是注释?示例:三、单行注释语法:以 China编程# 开头,后面的内容为注释内容示例:示例:四

MySQL count()聚合函数详解

《MySQLcount()聚合函数详解》MySQL中的COUNT()函数,它是SQL中最常用的聚合函数之一,用于计算表中符合特定条件的行数,本文给大家介绍MySQLcount()聚合函数,感兴趣的朋... 目录核心功能语法形式重要特性与行为如何选择使用哪种形式?总结深入剖析一下 mysql 中的 COUNT

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁

ModelMapper基本使用和常见场景示例详解

《ModelMapper基本使用和常见场景示例详解》ModelMapper是Java对象映射库,支持自动映射、自定义规则、集合转换及高级配置(如匹配策略、转换器),可集成SpringBoot,减少样板... 目录1. 添加依赖2. 基本用法示例:简单对象映射3. 自定义映射规则4. 集合映射5. 高级配置匹

MySQL 中 ROW_NUMBER() 函数最佳实践

《MySQL中ROW_NUMBER()函数最佳实践》MySQL中ROW_NUMBER()函数,作为窗口函数为每行分配唯一连续序号,区别于RANK()和DENSE_RANK(),特别适合分页、去重... 目录mysql 中 ROW_NUMBER() 函数详解一、基础语法二、核心特点三、典型应用场景1. 数据分

Spring 框架之Springfox使用详解

《Spring框架之Springfox使用详解》Springfox是Spring框架的API文档工具,集成Swagger规范,自动生成文档并支持多语言/版本,模块化设计便于扩展,但存在版本兼容性、性... 目录核心功能工作原理模块化设计使用示例注意事项优缺点优点缺点总结适用场景建议总结Springfox 是

嵌入式数据库SQLite 3配置使用讲解

《嵌入式数据库SQLite3配置使用讲解》本文强调嵌入式项目中SQLite3数据库的重要性,因其零配置、轻量级、跨平台及事务处理特性,可保障数据溯源与责任明确,详细讲解安装配置、基础语法及SQLit... 目录0、惨痛教训1、SQLite3环境配置(1)、下载安装SQLite库(2)、解压下载的文件(3)、

使用Python绘制3D堆叠条形图全解析

《使用Python绘制3D堆叠条形图全解析》在数据可视化的工具箱里,3D图表总能带来眼前一亮的效果,本文就来和大家聊聊如何使用Python实现绘制3D堆叠条形图,感兴趣的小伙伴可以了解下... 目录为什么选择 3D 堆叠条形图代码实现:从数据到 3D 世界的搭建核心代码逐行解析细节优化应用场景:3D 堆叠图

Springboot如何正确使用AOP问题

《Springboot如何正确使用AOP问题》:本文主要介绍Springboot如何正确使用AOP问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录​一、AOP概念二、切点表达式​execution表达式案例三、AOP通知四、springboot中使用AOP导出