最近看了下python的第三方库opencv,在python中用来对图片进行一些简单处理还是非常好用的,比如在图形上画矩形框,圆框,指示线,椭圆以及文字等,只需要调用几个相应的函数,设置好起止坐标点以及颜色、画笔宽度等就能实现想要的效果,但是发现一个问题,在opencv调用绘制文字的函数时,如果是要填充汉字,则会显示??或者空白。

经过查询资料得知原因:opencv提供了一个cv2.putText方法,可以用来在图片上绘制文字。但是,如果你用来绘制中文的时候你会发现全是问号,也就是乱码,主要是因为OpenCV并不支持no-ascii码的原因,所以我们需要借助其他的库来在图片上绘制中文,例如PIL模块。

实现的效果如下

安装opencv库命令

pip install opencv-python

在图片上绘制中文

如果没有按照PIL模块,需要先安装,通过以下命令可以进行安装

pip install Pillow

代码如下

import cv2import numpy as np
from PIL import ImageFont,ImageDraw,Image# 读取图片。
img = cv2.imread("E:\\cat.jpg")# 绘制指示线段
# 参数1:图片
# 参数2:起点
# 参数3:终点
# 参数4:BGR颜色
# 参数5:宽度
cv2.line(img, (75, 55), (130, 133), (122, 50, 255), 2)# 绘制圆形
# 参数1:图片
# 参数2:圆心
# 参数3:半径
# 参数4:BGR颜色
# 参数5:宽度 值为-1时填充
cv2.circle(img, (180, 170), 60, (0, 0, 255), 2)# 绘制椭圆
# 参数1:图片
# 参数2:圆心
# 参数3:横纵轴长
# 参数4:倾斜角度
# 参数5:绘制起点角度
# 参数6:绘制终点角度
# 参数7:BGR颜色
# 参数8:宽度 值为-1时填充
cv2.ellipse(img, (60, 30), (70, 25), 0, 0, 360, (0, 255, 255), 2)# 绘制矩形
# 参数1:图片
# 参数2:左上角
# 参数3:右下角
# 参数4:BGR颜色
# 参数5:宽度 值为-1时填充
cv2.rectangle(img, (330, 80), (450, 220), (0, 255, 0), 2)# 添加文字
# 参数1:图片
# 参数2:文本内容
# 参数3:文字位置
# 参数4:文字类型
# 参数5:文字大小
# 参数6:BGR颜色
# 参数7:文字粗细
cv2.putText(img, "chairs", (15, 40), cv2.FONT_HERSHEY_COMPLEX, 1, (0, 0, 255), 1)
cv2.putText(img, "cat", (360, 250), cv2.FONT_HERSHEY_COMPLEX, 1.2, (0, 255, 0), 2)#导入字体文件
fontpath = "simsun.ttc"
#设置字体的颜色
b,g,r,a = 150,22,50,0
#设置字体大小
font = ImageFont.truetype(fontpath,35)
#将numpy array的图片格式转为PIL的图片格式
img_pil = Image.fromarray(img)
#创建画板
draw = ImageDraw.Draw(img_pil)
#在图片上绘制中文
draw.text((200,250),"绘制中文",font=font,fill=(b,g,r,a))
img = np.array(img_pil)# 显示图像
cv2.imshow("title", img)# 进程不结束,一直保持显示状态
cv2.waitKey(0);#销毁所有窗口
cv2.destroyAllWindows()

python 使用opencv在图片上绘制矩形、圆形以及中英文相关推荐

  1. python图片识别是否p过_用 Python 和 OpenCV 检测图片上的条形码

    用 Python 和 OpenCV 检测图片上的的条形码 这篇博文的目的是应用计算机视觉和图像处理技术,展示一个条形码检测的基本实现.我所实现的算法本质上基于StackOverflow 上的这个问题, ...

  2. 使用Python和OpenCV检测图片上的条形码

    这篇博文的目的是应用计算机视觉和图像处理技术,展示一个条形码检测的基本实现.我所实现的算法本质上基于StackOverflow 上的这个问题,浏览代码之后,我提供了一些对原始算法的更新和改进. 首先需 ...

  3. 【OpenCV在图片上绘制点、圆(C++)】

    文章目录 前言 一.引入头文件 二.在图像上绘制圆.点 1.关键函数 2.举个例子 总结 前言 也没啥前言好说的,就是做项目时候要绘制点和圆,自己学会了就在这记录一下(其实是好久以前了,一直在草稿箱, ...

  4. 用 Python 和 OpenCV 检测图片上的条形码Detecting Barcodes in Images with Python and OpenCV

    UPDATE: The introduction to this post may seen a little "out there". For some context, I h ...

  5. opencv进阶学习笔记6:使用鼠标在图像上绘制矩形框或者多边形框

    基础版笔记传送门: python3+opencv学习笔记汇总目录(适合基础入门学习) 进阶版笔记目录: python+opencv进阶版学习笔记目录(适合有一定基础) 感兴趣区域传统绘制: openc ...

  6. 如何用Python在图片上绘制BoundingBox

    参考资料: https://blog.csdn.net/weixin_41735859/article/details/106599903 在目标检测等CV领域的任务里,经常会涉及到在图片上绘制BBo ...

  7. 图片上绘制点阵汉字(C++)

    在Ubuntu下用C/C++(或python) 调用opencv库编程显示一张图片,并打开一个名为"logo.txt"的文本文件(其中只有一行文本文件,包括你自己的名字和学号),按 ...

  8. canvas在图片上绘制图形

    说明 在vue项目中,后台返回图片的url和矩形的顶点坐标(左上和右下),需要在图片上绘制矩形框,并在前端进行展示(一张张的播放图片). 其中返回的数据是多张图片的集合,前端也需要整合一个绘制后的图片 ...

  9. 使用Python,OpenCV进行涂鸦(绘制文字、线、圆、矩形、椭圆、多边形轮廓、多边形填充、箭头~)

    使用Python,OpenCV进行涂鸦(绘制文字.线.圆.矩形.椭圆.多边形轮廓.多边形填充.箭头) 1. 效果图 2. 原理 2.1 绘制线:cv2.line(canvas, (300, 0), ( ...

最新文章

  1. fragment中listview触发事件setOnItemClickListener不好使
  2. Windbg dump分析 学习总结
  3. 【学术相关】发表 SCI 论文有哪些实用工具?
  4. linux分析文件格式,linux elf文件格式分析
  5. 在一周之内,快速看完整部教材,列出你不懂的5-10个问题。
  6. python rpc webservice_关于RPC、HTTP、WebService的区别
  7. TyepScript入门教程 之 async await
  8. 【英语学习】【Level 08】U01 Let's Read L5 You're a wizard, Harry.
  9. OTSU_图像二值化分割阈值的算法
  10. html图像区域映射菜鸟,HTML area 标签 | w3cschool菜鸟教程
  11. 江西省大学计算机科学与技术排名,最新江西省大学一流学科排行榜
  12. 个人观点:苹果对iPad商标事件的解决办法
  13. 塔城地区谷歌高清卫星地图下载
  14. linphone 智能带宽分配
  15. Single Threaded Execution Pattern
  16. 基于SARIMA、XGBoost和CNN-LSTM的时间序列预测对比
  17. Java入门第116课——向List中插入和删除元素
  18. EasyExcel 使用Converter 转换注入时报nullPoint异常
  19. LinkCloud引领云主机免申请免费试用潮流
  20. 我的面试经历:day04

热门文章

  1. Gif Movie Gear
  2. python-使用电脑摄像头扫码
  3. 情侣间的计算机游戏,促进一下情侣之间的感情 ? 你可以玩这些游戏啦!
  4. 表格 + 分页 +表格上编辑
  5. 3.sparksql:函数使用:实现累加和累乘
  6. 全球最厉害的14位程序员你都认识谁
  7. Unity 子弹射击算法
  8. CSRF攻击原理和防护措施讲解
  9. 搭搭云 新世代超级应用平台 JNPF快速开发平台框架 3.4.7最新版源码
  10. 火狐浏览器页面里有iframe框架时,当开发者后台修改了css样式,火狐浏览器不能及时响应问题