python图像处理一

孤街浪徒 提交于 2021-02-18 04:27:29

将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果

#coding=utf-8
from PIL import Image,ImageDraw,ImageFont,ImageFilter
import cv2
import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号

#字体的位置,不同版本的系统会有不同
font_path = "30213021386.ttf"

pic_path = "001.png"#原始图像
pic_savepath="001_RES.png"# 处理后图像

def gene_message_num(pic_path,message_num,fontcolor):
    '''
    @pic_path:原始头像图片的位置
    @message_num:未读消息的数目
    @fontcolor:显示消息数目的字体颜色
    '''
    image = Image.open(pic_path)
    size = image.size
    width,height = size #原始图片的宽和高
    font = ImageFont.truetype(font_path,30) #字体
    draw = ImageDraw.Draw(image)  #创建画笔
    text = str(message_num)
    font_width, font_height = font.getsize(text)
    draw.text((width - font_width, 0),text,\
            font=font,fill=fontcolor) #填充数字,位置在右上角
    image.save(pic_savepath) #保存图片
    

# 测试
message_num = 4
fontcolor = (255,0,0)#红色
gene_message_num(pic_path,message_num,fontcolor)


img1=cv2.imread('001.png')
img2=cv2.imread('001_RES.png')

# cv2读取的图像数据为BGR [:,:,::-1] :表示第三个维度逆序
''' 数据示例
[[[216 220 215]
  [215 219 214]
  [214 218 213]
  ...
  [215 220 219]
  [216 221 220]
  [220 225 224]]

 [[213 217 212]
  [215 219 214]
  [216 220 215]
  ...
  [213 218 217]
  [212 217 216]
  [212 217 216]]

 [[211 214 212]
  [215 218 216]
  [219 222 220]]]
  
  
'''
plt.subplot(221)
plt.imshow(img1[:,:,::-1]) # 
plt.title('cv2读取原图')

plt.subplot(222)
plt.imshow(img2[:,:,::-1])
plt.title('cv2读取处理后图')

img3 = Image.open("001.png")
img4=Image.open("001_RES.png")
plt.subplot(223)
plt.imshow(np.array(img3))
plt.title('PIL读取原图')

plt.subplot(224)
plt.imshow(np.array(img4))
plt.title('PIL读取处理后图')
plt.savefig('res.png')

在这里插入图片描述

PIL:Image 和 cv2简单比较

  • 打开
img1 = Image.open("1.jpg")  
img2 =cv2.imread("1.jpg")
  • 长宽
w, h = img1.size
w, h = img2.shape
  • Resize
ReSImg1 = img1.resize((224,224))
ReSImg2 =cv2.resize(img2,(h,w))
  • 保存
img1.save(path)
cv2.imwrite(path,img)

本文分享 CSDN - wbaolong。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!