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可以实现中文的输出。

思路:

  1. OpenCV图片格式转换成PIL的图片格式;
  2. 使用PIL绘制文字;
  3. 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 ——图像加文字相关推荐

  1. pythonopencv读取图像属性_2、OpenCV Python 图像属性获取

    __author__ = "WSX" import cv2 as cv import numpy as np image = cv.imread("1.JPG" ...

  2. 图像处理--OpenCV实现图像加噪与滤波

    前言: Hello大家好,我是Dream. 今天来学习一下如何使用OpenCV实现图像加噪与滤波,欢迎大家一起参与探讨交流~ 本文目录: 一.实验内容 二.实验环境和配置 三.实验原理及操作 1. 添 ...

  3. php教程水印,PHP教程之ImageTTFText函数实现图像加文字水印的详细资料说明

    ImageTTFText函数实现PHP图像加文字水印功能 一个ImageTTFText函数包含了如下的参数 imagettftext (image,size,angle, x, y,color,fon ...

  4. python+cv2【给摄像头读取出的图像加文字和文字底纹】

    ret1, img1 = cap1.read()​ #假设img1为摄像头读取出来的单帧图像 #第一步先给图像左上角加上矩形底纹 x, y, w, h = 0, 0, 140, 40 cv2.rec ...

  5. opencv python 图像形态学操作/图像腐蚀/图像膨胀/开运算/闭运算/顶帽/黑帽

    Morphological Transformations 1图像腐蚀 腐蚀的基本思想:侵蚀前景物体的边界(总是试图保持前景为白色):内核在图像中滑动(如在2D卷积中).只有当内核下的所有像素都是1时 ...

  6. opencv python 图像缩放/图像平移/图像旋转/仿射变换/透视变换

    Geometric Transformations of Images 1图像转换 OpenCV提供了两个转换函数cv2.warpAffine和cv2.warpPerspective,可以使用它们进行 ...

  7. python图像加坐标_Python使用matplotlib模块绘制图像并设置标题与坐标轴等信息示例...

    本文实例讲述了Python使用matplotlib模块绘制图像并设置标题与坐标轴等信息.分享给大家供大家参考,具体如下: 进行图像绘制有时候需要设定坐标轴以及图像标题等信息,示例代码如下: #-*- ...

  8. OpenCV—Python 图像加减乘除-逻辑运算

    一.图像逻辑运算 1.1 add-subtract-图像矩阵加减运算 """ cv2.add(src1, src2, dst=None, mask=None, dtype ...

  9. OpenCV—python 图像相似度算法(dHash,方差)

    文章目录 一.SIFT综述 二.哈希算法(perceptual hash algorithm) 2.1 相似图片检测步骤: 2.2 代码实现 三.使用方差检测图像相似度 3.1 实现步骤 3.2 代码 ...

最新文章

  1. uniapp无法使用substr_SQLite 3.34.0发布,世界上使用量最大的数据库引擎
  2. mesos-dns marathon-lb
  3. 西安网络推广浅谈SEO优化旧内容页面能不能删?怎么删?
  4. Android开发框架afinal实践
  5. 用SQL进行嵌套查询
  6. 牛客第二场 G.League of Legends-单调队列优化dp
  7. 关于redis的db的使用几号db的问题
  8. 谐波合成法matlab,基于Kaimal谱采用谐波合成法生成脉动风场
  9. GitHub改为token验证后,如何提交代码?
  10. 大学数学实验习题--统计推断 (附答案)
  11. SAP MM批次管理
  12. 读后感 《大话数据结构》
  13. Google 应用与游戏出海 8 月刊: 遨游出海季,共创新增长 (上)
  14. Java牛客项目课_仿牛客网讨论区_第七章
  15. pyecharts 模块
  16. MAVEN使用中 error role: org.apache.maven.model.validation.ModelValidato...
  17. [软件工程 复习] 记录
  18. 新品推介:乐扩PCI-E转NGFF(PCIe)SSD+SATA转NGFF(SATA)转接卡
  19. 新旧工艺比较:PCB制造工艺
  20. 反思一下自己工作中的几个问题

热门文章

  1. RK3399处理器性能介绍
  2. 齐鲁工业计算机考研分数线,齐鲁工业大学2021考研分数线已公布
  3. Android 直播 APP实现直播流程
  4. 如何分析常见的语音芯片故障?
  5. Daniel Krawisz:一切都正在坠入BSV的黑洞中
  6. 摧龙六式——整理自《输赢》
  7. 注册机编写器 Keymake v1.73 下载
  8. 应用系统数据删除与恢复
  9. python手机代码编辑器_Python怎么打开代码编辑器
  10. 自然资源数据治理方案