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

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

安装

pip install --upgrade setuptools

pip install numpy Matplotlib

pip install opencv-python

给定图片,以及矩形框坐标,画图

原图:

7d5f64d6a4c7

原图.jpg

结果图1:

7d5f64d6a4c7

结果图1.png

结果图2:

7d5f64d6a4c7

结果图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()

注意

坐标需是整数,否则会报错如下:

7d5f64d6a4c7

结果报错.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值