OpenCV-13绘制多边形和文本

一、画多边形

使用API polylines绘制多边形。

polylines(img, pts, isClose, color, thickness, lineType, shift)

其中:

pts:表示多边形的点集,(需要使用集合来表示,且必须是int32位及以上)

isColse:判断是否多边形是否闭合,如果闭合则线段连在一起;不闭合则是断开的。

示例代码如下:

import cv2
import numpy as npimg = np.zeros((480, 640, 3), np.uint8)   # 创建一个全黑的背景图
pts = np.array([(200, 100), (150, 300), (350, 400)])
img2 = np.zeros((480, 640, 3), np.uint8)   # 创建一个全黑的背景图cv2.polylines(img, [pts], False, (0, 255, 0), 5, 16)
cv2.polylines(img2, [pts], True, (0, 255, 0), 5, 16)
# Opencv读取的行和列与numpy相反cv2.imshow("line", img)
cv2.imshow("line2", img2)
cv2.waitKey(0)
cv2.destroyAllWindows()

主要注意pts是三维的。 

输出结果如下:

不闭合的效果:

闭合的效果: 

 

二、填充多边形

使用API cv2.fillPoly()

与polylines相比,缺少isColse,因为为百分百闭合。

follPloy(img, pts, isClose, color, thickness, lineType, shift)

示例代码如下:

import cv2
import numpy as npimg = np.zeros((480, 640, 3), np.uint8)   # 创建一个全黑的背景图
pts = np.array([(200, 100), (150, 300), (350, 400)])cv2.fillPoly(img, [pts], (0, 0, 255), 4)
cv2.imshow("line", img)cv2.waitKey(0)
cv2.destroyAllWindows()

输出结果如下:

三、绘制文本及中文文本

cv2.putText(img,text,org,fontFace,color,thickness,lineType,[bottomleftOrigin])

text:表示绘制的文本

org:文本在图片中的左下角坐标(即文字从哪个坐标开始)

fontFace:字体类型

fontScale:字体大小

示例代码如下:

import cv2
import numpy as npimg = np.zeros((480, 640, 3), np.uint8)   # 创建一个全黑的背景图
cv2.putText(img, "Hello OpenCV", (200, 200), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255))cv2.imshow("line", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

输出结果如下:

但是,当输出的文本为中文时,会报错,因此OpenCV无法直接绘制中文。

如果需要绘制中文,可以使用Pillow包。

打开C盘,在以下路径中找到字体文件:C:\Windows\Fonts

将需要的中文字体Copy到程序的子目录中。

示例代码如下:

import cv2
import numpy as np
from PIL import ImageFont, ImageDraw, Image  # 导入字体形状,字体绘制和图像img = np.full((400, 520, 3), fill_value=255, dtype=np.uint8)   # 创建一个480P的白底背景图# 导入字体  第一个参数为字体类型,第二个参数为字体大小
font = ImageFont.truetype("./SIMYOU.TTF", 30)# 创建一个pillow的图片
img_pill = Image.fromarray(img)
# 将创建好的图片绘制出来
draw = ImageDraw.Draw(img_pill)
# 利用draw去绘制中文
draw.text((150, 180), "大家好", font = font, fill=(0, 0, 255))
# 重新变回ndarray
img = np.array(img_pill)
cv2.imshow("text", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

输出结果如下:

OpenCV无法实现绘制中文文本,因此通过Pillow绘制再转化为ndarray的格式用OpenCV的形式显示。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/314428.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

nvm安装版本后设置默认镜像地址和nvm list available出现空白解决办法

如题 npm config get registry https://registry.npmjs.org/发现镜像地址依旧是默认的 解决 运行输入npm config list 查看这个选项对应的目录 修改为的内容如下 homehttps://npmmirror.com registryhttps://registry.npmmirror.com/或者也可以 homehttps://npmmirror.com…

008、所有权

所有权可以说是Rust中最为独特的一个功能了。正是所有权概念和相关工具的引入,Rust才能够在没有垃圾回收机制的前提下保障内存安全。 因此,正确地了解所有权概念及其在Rust中的实现方式,对于所有Rust开发者来讲都是十分重要的。在本文中&…

JavaScript 基础(一)

实验需新建一个 test.html 文件&#xff0c;用于编写代码。后续的例子中&#xff0c;将不再提醒建立文件&#xff0c;大家根据个人需求自行创建对应的 html 文件&#xff0c;并完成代码练习&#xff1a; 首先来看看范例代码&#xff1a; <!doctype html> <html>&…

Docker:部署若依前后端分离版

Docker&#xff1a;部署若依前后端分离版 1. 停止天翼云上的原来跑的若依项目2. 停止腾讯云上的若依项目3. 使用Docker部署3.1 天翼云数据库&Redis3.1.1 部署数据库3.1.2 部署Redis数据库3.1.1 部署Nginx(这里被天翼云坑了换的腾讯云运行nginx) 3.2 腾讯云部署后端&前端…

【机器学习】卷积神经网络(四)-实现细节(Caffe框架为例)

六、 实现细节 都有哪些开源的卷积神经网络实现 caffe中卷积神经网络各个层&#xff08;卷积层、全连接层、池化层、激活函数层、内基层、损失层等&#xff09; Caffe2 与caffe 对比 caffe2 开源吗 使用caffe的c 版本和python版本&#xff0c;分别适用于哪些场景 6.1 卷积层 在…

【C++】STL 容器 - map 关联容器 ③ ( map 容器常用 api 操作 | map 容器迭代器遍历 | map#insert 函数返回值处理 )

文章目录 一、map 容器迭代器遍历1、map 容器迭代器2、代码示例 二、map 容器插入结果处理1、map#insert 函数返回值处理2、代码示例 一、map 容器迭代器遍历 1、map 容器迭代器 C 语言中 标准模板库 ( STL ) 的 std::map 容器 提供了 begin() 成员函数 和 end() 成员函数 , 这…

关于发展模式加入变量的问题解决

问题1描述&#xff1a; 编译的时候不报错&#xff0c;但是在运行的时候出错输出 FLDLST: ustar in fincl( 17 ) not found ENDRUN: called without a message string 问题1解决&#xff1a; 这是因为在cas-esm 的atm_in 中写入了某个变量&#xff0c;但是在F90 代码里面没…

MODIS ET 蒸散发数据

MODIS ET 即 MOD16 系列产品&#xff0c;属于MODIS Level4 的产品。 在 LP DAAC - MODIS 上搜索了现存的 ET&#xff08;Evapotranspiration&#xff09; 数据&#xff1a; 建议使用最新版本Collection 6.1&#xff0c;也就是结尾是.061的数据集。 在 Collection 6.1 中&…

旅游平台网页前后端

功能清单 游客功能 用户注册、登录登录权限拦截按名称搜索房间支付流程查看订单信息和状态评论预定过的房间&#xff0c;并自动修改订单状态查看统计剩余房间数量&#xff0c;数量为0时不可预定 管理员功能 房间分类管理 类型的删除、修改、查询&#xff08;准备添加增添功能…

数据库中的时间和前台展示的时间不一样,如何保存日期格式的数据到数据库? 如何展示数据库的日期数据到前台

我 | 在这里 &#x1f575;️ 读书 | 长沙 ⭐软件工程 ⭐ 本科 &#x1f3e0; 工作 | 广州 ⭐ Java 全栈开发&#xff08;软件工程师&#xff09; ✈️公众号 | 热爱技术的小郑 文章底部有个人公众号二维码。回复 Java全套视频教程 或 前端全套视频教程 即可获取 300G 教程资料…

Springboot整合Elasticsearch 7.X 复杂查询

这里使用Springboot 2.7.12版本&#xff0c;Elasticsearch为7.15.0。 导入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId></dependency> yaml文件配置…

CGAL的空间排序

1、介绍 许多在CGAL中实现的几何算法都是增量的&#xff0c;因此它们的速度取决于插入顺序。此软件包提供了排序算法&#xff0c;可以大大提高此类算法的运行时间。 其基本原理是沿着空间填充曲线对对象进行排序&#xff0c;这样在插入顺序上&#xff0c;几何上接近的两个对象将…