python 之 opencv 画矩形框,写文字,保存
安装
pip install --upgrade setuptools
pip install numpy Matplotlib
pip install opencv-python
给定图片,以及矩形框坐标,画图
原图:
原图.jpg结果图1:
结果图1.png结果图2:
结果图2.png
结果图1代码
# -*- coding: UTF-8 -*-
# __author__ = 'shelly'
import cv2
import numpy as np
from PIL import Image, ImageDraw, ImageFont
def section_1():
"""给定框的左上角(x,y)和右下角(x,y)的坐标"""
image = '1.jpg'
img = cv2.imread(image)
left_top = (600.1, 305.1)
right_bottom = (630.1, 370.1)
# 标注矩形框
# img => 图片数据;
# left_top => (最左,最上) 是个tuple;
# right_bottom => (最右,最下) 是个tuple;
# (0, 255, 255) => rgb 颜色;
# 3 => 粗细程度
cv2.rectangle(img, left_top, right_bottom, (0, 255, 255), 3)
# img => 图片数据;
# key => 需要显示的信息;
# (x, y) => 给定一个元组 里面给定点坐标 x, y;
# cv2.FONT_HERSHEY_COMPLEX_SMALL => 模式;
# 2 => 字体粗细;
# (0, 0, 255) => rgb 颜色;
# 写入文字,但是只支持英文
font = cv2.FONT_HERSHEY_COMPLEX_SMALL
key = 'this is 1'
# 在指定坐标写文字
cv2.putText(img, key, left_top, font, 2, (0, 0, 255), 1)
cv2.imwrite('001_new.jpg', img)
if __name__ == '__main__':
section_1()
结果图2代码
文字为中文
pip3 install freetype-py
# -*- coding: UTF-8 -*-
# __author__ = 'shelly'
import cv2
import numpy as np
from PIL import Image, ImageDraw, ImageFont
def section_2():
"""支持中文"""
image = '1.jpg'
img = cv2.imread(image)
left_top = (600, 305)
right_bottom = (630, 370)
cv2.rectangle(img, left_top, right_bottom, (0, 255, 255), 3)
# cv2和PIL中颜色的hex码的储存顺序不同
frame = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
pilimg = Image.fromarray(frame)
draw = ImageDraw.Draw(pilimg)
# # 参数1:字体文件路径,参数2:字体大小
font = ImageFont.truetype("simhei.ttf", 20, encoding="utf-8")
key = '这个是 1'
# 参数1:打印坐标,参数2:文本,参数3:字体颜色,参数4:字体
draw.text(left_top, key, (0, 0, 255), font=font)
# 输出文字后,图片转换会cv2识别格式
frame = cv2.cvtColor(np.array(pilimg), cv2.COLOR_RGB2BGR)
# 保存图片
cv2.imwrite('001_new_chi.jpg', frame)
if __name__ == '__main__':
section_2()
注意
坐标需是整数,否则会报错如下:
结果报错.png
网友评论