python 读取显示保存图片,在图片上添加 矩形框 & 文字。三种方案:matplotlib.pyplot、cv2、PIL-Image

本文详细介绍了如何使用OpenCV进行图像处理,包括读取、显示图像,绘制矩形和添加文本。同时,对比了OpenCV与matplotlib、PIL在图像处理上的不同应用,并提供了代码示例。

opencv

import cv2
import numpy as np
img = cv2.imread('touxiang.jpg',cv2.IMREAD_GRAYSCALE)
size = img.shape  # [w,h,c]  
cv2.imshow('figure_name', img)# 第一个参数是窗口名称。第二个参数是图片

# 绘制矩形
cv2.rectangle(img, pt1, pt2, color[, thickness[, lineType[, shift]]]) 
# pt1:左上角坐标, pt2:右下角坐标
# color:线条颜色,如 (255, 0, 255) 蓝色,BGR
# thickness:线条宽度(int)

# 添加文本
cv2.putText(img, text, org, fontFace, fontScale, color[, thickness[, lineType[, bottomLeftOrigin]]])
#text:要绘制的文字, org:文字在图像中的左下角坐标
# fontFace:字体, fontScale:字体大小,该值和基础大小相乘得到字体大小
# color:文字颜色, thickness:字体线条宽度
# bottomLeftOrigin:为 true,图像数据原点在左下角;否则,图像数据原点在左上角

cv2.waitKey(0) #等待用户的按键事件
cv2.destroyAllWindows()

opencv使用的BGR模式。matplotlib使用RGB模式。因此,在使用matplotlib显示cv2读取的图像,会导致颜色错误,故需要之前先要做一下图像颜色的转换cv2.cvtColor(img,cv2.COLOR_BGR2RGB)就可以正常显示。

matplotlib

一般常用来plot,surf 等来 绘制图像,而不是显示图像。

import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt

x0,x1,y0,y1=[1,1,5,5]
fig = plt.figure()
ax = plt.axis('on') # 关掉坐标轴为 off
plt.title('title') # 图像标题

plt.subplot(211)  # 划分子图,2行1列,第一个图
img = plt.imread('图片路径')  
plt.imshow(img) 
 
upleft = (x0, y0)
width = x1-x0
height = y1-y0

# patches添加轴句柄,不是figure
rect = patches.Rectangle(upleft, width, height, linewidth=0.3, edgecolor='r', facecolor='none') # facecolor:填充颜色
ax.add_patch(rect) 
plt.show()
plt.savefig('./test.jpg') # 保存图像到test.jpg

PIL

from PIL import Image,ImageDraw
import matplotlib.pyplot as plt
x1, y1, x2, y2 = 111010
img=Image.open('d:/dog.png')#显示图像
img.show()
print(img.size) # 图像尺寸
# 绘制矩形
draw = ImageDraw.Draw(img) 
draw = ImageDraw.Draw(img)
#矩形 左上坐标和 右下角坐标,后面是制定颜色RGB,红色
draw.rectangle([x1, y1, x2, y2], outline=(255, 0, 0),width=2)

#在左上角添加红色文字 ship
draw.text([x1, y1], 'ship', (255, 0, 0))

img.show() #显示
img.save('图片保存路径/xxx.jpg')

参考:https://www.jianshu.com/p/e8d058767dfa

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值