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

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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容