OpenCV-Python ——图像加文字
Opencv 视频添加文字和标记框
- 前言
- 一、OpenCV添加文字问题
- 二、解决思路
- 1、OpenCV图片转换为PIL图片格式
- 2、使用PIL绘制文字
- 3、PIL图片格式转换成OpenCV的图片格式
- 三、完整代码
前言
最近做了个视屏实时处理的需求,用opencv python实现视频/图像加框以及文字(支持汉字)
一、OpenCV添加文字问题
OpenCV添加文字的方法putText(…),添加英文是没有问题的,但如果你要添加中文就会出现“???”的乱码,需要特殊处理一下。
#主要用到cv2的两个函数,cv2.rectangle(图像, (矩形左上角坐标), (矩形右下角坐标), (矩形颜色), 线条粗细)
cv2.rectangle(frame, (left_x_up, left_y_up), (right_x_down, right_y_down), (55,255,155), 5)#cv2.putText(图像, 要写入的内容, (文字坐标), 字体, 字号, (字体颜色), 字体粗细)
cv2.putText(frame, 'frame_%s' %frame_id, (word_x, word_y), cv2.FONT_HERSHEY_SIMPLEX, 1, (55,255,155), 2)
二、解决思路
使用PIL的图片绘制添加中文,可以指定字体文件,那么也就是说使用PIL可以实现中文的输出。
思路:
- OpenCV图片格式转换成PIL的图片格式;
- 使用PIL绘制文字;
- PIL图片格式转换成OpenCV的图片格式;
1、OpenCV图片转换为PIL图片格式
img = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
2、使用PIL绘制文字
draw = ImageDraw.Draw(img)
fontText = ImageFont.truetype("font/simsun.ttc", textSize, encoding="utf-8")
draw.text((left, top), "文字内容", textColor, font=fontText)
注:字体文件为:simsun.ttc,Windows可以在C:\Windows\Fonts下面查找。
3、PIL图片格式转换成OpenCV的图片格式
cv2.cvtColor(numpy.asarray(img), cv2.COLOR_RGB2BGR)
三、完整代码
import cv2
from PIL import Image, ImageDraw, ImageFont
import numpy as npdef cv2_img_add_text(img, text_str, left, top, text_color, text_size):if isinstance(img, np.ndarray):img = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))draw = ImageDraw.Draw(img)fontText = ImageFont.truetype("msjh.ttc", text_size, encoding="utf-8")draw.text((left, top), text_str, text_color, font=fontText)return cv2.cvtColor(np.asarray(img), cv2.COLOR_RGB2BGR)cap = cv2.VideoCapture(0) # 读取视频
fps = int(round(cap.get(cv2.CAP_PROP_FPS)))
size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.avi', fourcc, fps, size)
word_x = 20
word_y = 20while cap.isOpened():ret, frame = cap.read()if ret:img_PIL = Image.fromarray(frame)text = "添加文本"frame = cv2.cvtColor(np.asarray(img_PIL), cv2.COLOR_RGB2BGR)frame = cv2_img_add_text(frame, text, word_x, word_y, (55, 255, 155), 40)cv2.imshow('frame', frame)out.write(frame)if cv2.waitKey(1) & 0xFF == ord('q'):breakelse:break
cap.release()
out.release()
cv2.destroyAllWindows()
OpenCV-Python ——图像加文字相关推荐
- pythonopencv读取图像属性_2、OpenCV Python 图像属性获取
__author__ = "WSX" import cv2 as cv import numpy as np image = cv.imread("1.JPG" ...
- 图像处理--OpenCV实现图像加噪与滤波
前言: Hello大家好,我是Dream. 今天来学习一下如何使用OpenCV实现图像加噪与滤波,欢迎大家一起参与探讨交流~ 本文目录: 一.实验内容 二.实验环境和配置 三.实验原理及操作 1. 添 ...
- php教程水印,PHP教程之ImageTTFText函数实现图像加文字水印的详细资料说明
ImageTTFText函数实现PHP图像加文字水印功能 一个ImageTTFText函数包含了如下的参数 imagettftext (image,size,angle, x, y,color,fon ...
- python+cv2【给摄像头读取出的图像加文字和文字底纹】
ret1, img1 = cap1.read() #假设img1为摄像头读取出来的单帧图像 #第一步先给图像左上角加上矩形底纹 x, y, w, h = 0, 0, 140, 40 cv2.rec ...
- opencv python 图像形态学操作/图像腐蚀/图像膨胀/开运算/闭运算/顶帽/黑帽
Morphological Transformations 1图像腐蚀 腐蚀的基本思想:侵蚀前景物体的边界(总是试图保持前景为白色):内核在图像中滑动(如在2D卷积中).只有当内核下的所有像素都是1时 ...
- opencv python 图像缩放/图像平移/图像旋转/仿射变换/透视变换
Geometric Transformations of Images 1图像转换 OpenCV提供了两个转换函数cv2.warpAffine和cv2.warpPerspective,可以使用它们进行 ...
- python图像加坐标_Python使用matplotlib模块绘制图像并设置标题与坐标轴等信息示例...
本文实例讲述了Python使用matplotlib模块绘制图像并设置标题与坐标轴等信息.分享给大家供大家参考,具体如下: 进行图像绘制有时候需要设定坐标轴以及图像标题等信息,示例代码如下: #-*- ...
- OpenCV—Python 图像加减乘除-逻辑运算
一.图像逻辑运算 1.1 add-subtract-图像矩阵加减运算 """ cv2.add(src1, src2, dst=None, mask=None, dtype ...
- OpenCV—python 图像相似度算法(dHash,方差)
文章目录 一.SIFT综述 二.哈希算法(perceptual hash algorithm) 2.1 相似图片检测步骤: 2.2 代码实现 三.使用方差检测图像相似度 3.1 实现步骤 3.2 代码 ...
最新文章
- uniapp无法使用substr_SQLite 3.34.0发布,世界上使用量最大的数据库引擎
- mesos-dns marathon-lb
- 西安网络推广浅谈SEO优化旧内容页面能不能删?怎么删?
- Android开发框架afinal实践
- 用SQL进行嵌套查询
- 牛客第二场 G.League of Legends-单调队列优化dp
- 关于redis的db的使用几号db的问题
- 谐波合成法matlab,基于Kaimal谱采用谐波合成法生成脉动风场
- GitHub改为token验证后,如何提交代码?
- 大学数学实验习题--统计推断 (附答案)
- SAP MM批次管理
- 读后感 《大话数据结构》
- Google 应用与游戏出海 8 月刊: 遨游出海季,共创新增长 (上)
- Java牛客项目课_仿牛客网讨论区_第七章
- pyecharts 模块
- MAVEN使用中 error role: org.apache.maven.model.validation.ModelValidato...
- [软件工程 复习] 记录
- 新品推介:乐扩PCI-E转NGFF(PCIe)SSD+SATA转NGFF(SATA)转接卡
- 新旧工艺比较:PCB制造工艺
- 反思一下自己工作中的几个问题