美文网首页python的基础以及提高
python 之 opencv 画矩形框,写文字,保存

python 之 opencv 画矩形框,写文字,保存

作者: g_s_007 | 来源:发表于2020-09-15 15:08 被阅读0次

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

相关文章

网友评论

    本文标题:python 之 opencv 画矩形框,写文字,保存

    本文链接:https://www.haomeiwen.com/subject/korfyktx.html