Python:PIL(Python Image Library)图像处理基础操作学习

基础操作:图片拼接、图片上加文字、文字上画点画线
 
打开图片:用image.open(filepath),将文件数据返给img图片对象,图片对象对象有size,format,mode等属性,其中:
size表示图像的宽度和高度(像素表示);
format表示图像的格式,常见的包括JPEG,PNG等格式;
mode表示图像的模式,定义了像素类型还有图像深度等,常见的有RGB,HSV等。
 

from PIL import Image

filepath_1 = r"D:\图片集\1\f1.jpg"
filepath_2 = r"D:\图片集\1\f2.jpg"

img1, img2 = Image.open(filepath_1), Image.open(filepath_2)
size1, size2 = img1.size, img2.size

 

# 横向拼接
sizex = size1[0] + size2[0]
sizey = size1[1] if size1[1]>size2[1] else size2[1]#条件表达式,横向拼接,纵向高度等于两张图片高度较大的值
joint = Image.new('RGB', (sizex,sizey),"red")#Image.new(mode,size,color)创建新的图片
loc1, loc2 = (0, 0), (size1[0], 0)
joint.paste(img1, loc1)#指定坐标粘贴图片
joint.paste(img2, loc2)
joint.save(r"D:\图片集\1\f18f19_hx.jpg")

# 纵向拼接
sizex = size1[0] if size1[0]>size2[0] else size2[0]
sizey = size1[1] + size2[1]
joint = Image.new('RGB', (sizex,sizey),"yellow")
loc1, loc2 = (0, 0), (0, size1[1])
joint.paste(img1, loc1)#指定坐标粘贴图片
joint.paste(img2, loc2)
joint.save(r"D:\图片集\1\f18f19_zx.jpg")

#图片合成覆盖
tmp_filepath = r"D:\图片集\1\f18.jpg"
tmp_img = Image.open(tmp_filepath)  # 要粘贴的图可选择大小或整张
size = tmp_img.size
x,y=50,50
box = (x, y, size[0] + x, size[1] + y)
img1.paste(tmp_img, box)# 在底图指定区域P上指定的图片
img1.save(r"D:\图片集\1\f1f18.jpg")  # 保存图片

#图片上加文本
from PIL import Image, ImageDraw, ImageFont
img = Image.open(r"D:\图片集\1\b1.jpg")
size = img.size
draw = ImageDraw.Draw(img)
ttfront = ImageFont.truetype('simhei.ttf', 12)#字体大小
draw.text((size[0]/3, size[1]-15),"我靠!",fill=(0,25,25), font=ttfront)#文字位置,内容,字体
# draw.text((size[0]/3, size[1]-15),"我靠!",fill="red", font=ttfront)#文字位置,内容,字体
img.save(r"D:\图片集\1\b1_1.jpg")

from PIL import Image,ImageDraw
filepath = r'C:\Users\19043952\Pictures\4655465.jpg'

resp={'data': {'faces': [{'faceBox': [193.0, 96.0, 439.0, 342.0], 'faceLandmarks': [275.83865, 180.95908, 362.8947, 194.82281, 312.94092, 252.11723, 271.8596, 282.56226, 342.0882, 292.60184], 'faceLandmarks106': [215.66821, 161.34305, 213.78894, 174.97047, 212.75708, 188.42839, 212.41, 201.61052, 212.92917, 215.26918, 213.56987, 228.05951, 215.06082, 241.39413, 217.22339, 254.68994, 221.08618, 267.41092, 226.59096, 279.5398, 233.48068, 291.009, 241.67505, 301.5763, 250.8501, 311.50275, 260.69437, 321.39624, 271.55478, 329.88974, 284.2334, 336.1467, 299.36716, 339.04462, 313.38156, 337.8756, 325.21475, 333.04446, 335.34354, 325.86084, 344.6462, 317.57748, 353.52005, 309.411, 361.72128, 300.59146, 369.3165, 291.07837, 376.02927, 280.96802, 381.99036, 270.24628, 387.15698, 259.08704, 392.04456, 247.8016, 396.29086, 236.21474, 399.88614, 224.70587, 402.7448, 212.82767, 405.25018, 200.64107, 406.79016, 187.89388, 239.13986, 158.61226, 256.2977, 151.37373, 275.21848, 155.12514, 292.0231, 163.2833, 306.66595, 173.06935, 303.34387, 180.33066, 287.9297, 172.25122, 271.88138, 165.85777, 255.47366, 161.3151, 338.73654, 178.01555, 353.66006, 172.38411, 369.82468, 168.52803, 386.64978, 168.76004, 399.3027, 178.59929, 385.54364, 178.01471, 370.8748, 178.8623, 355.53806, 181.19496, 340.22006, 185.14494, 319.09958, 190.18993, 317.32907, 209.93628, 315.67526, 229.66933, 314.02652, 249.38547, 304.30112, 194.36691, 293.61887, 233.62137, 285.67035, 248.59335, 293.05756, 256.15674, 301.50717, 259.21896, 311.36758, 264.06717, 321.1672, 261.69504, 329.89835, 259.70862, 337.3113, 254.36252, 333.31485, 238.23454, 331.63712, 197.8096, 255.09375, 181.663, 264.89597, 177.79988, 276.39178, 177.77672, 286.97427, 182.8451, 293.97034, 192.09334, 283.83054, 192.52422, 272.77652, 191.66656, 262.64444, 187.6475, 275.28506, 183.43282, 341.69186, 198.13875, 350.59317, 191.26466, 361.65634, 189.0343, 372.1116, 191.80492, 380.0312, 197.95833, 371.99606, 201.9724, 361.7851, 203.30664, 351.27036, 201.22423, 361.5074, 194.76723, 272.93512, 284.1596, 286.8647, 282.4119, 300.90228, 280.9551, 308.59906, 283.87387, 316.7575, 282.67105, 328.35464, 286.53555, 338.76785, 291.02914, 329.5709, 298.04147, 319.1745, 303.21436, 305.71783, 304.3517, 291.9764, 300.40842, 281.5957, 293.17368, 278.14554, 285.07132, 290.73175, 287.93796, 307.66937, 291.09973, 323.17075, 291.14206, 334.04132, 291.02536, 322.84064, 291.33102, 307.428, 291.37982, 290.6918, 288.2216, 275.30695, 183.45937, 361.48477, 194.77722]}]}}

faceBox = resp['data']['faces'][0]['faceBox']
xmin, ymin, xmax, ymax = faceBox[0], faceBox[1], faceBox[2], faceBox[3]
faceLandmarks106 = resp['data']['faces'][0]['faceLandmarks106']

img = Image.open(filepath, "r")
a = ImageDraw.Draw(img)
a.line(((xmin, ymin), (xmax, ymin)), fill=(255, 0, 0), width = 3)#两点画线,fill颜色RGB值
a.line(((xmax, ymin), (xmax, ymax)), fill=(255, 0, 0), width = 3)
a.line(((xmax, ymax), (xmin, ymax)), fill=(255, 0, 0), width = 3)
a.line(((xmin, ymax), (xmin, ymin)), fill=(255, 0, 0), width = 3)

t106=[]
for i in range(0, len(faceLandmarks106), 2):
    t106.append(tuple(faceLandmarks106[i:i + 2]))
a.point(t106, fill=(0,0,0))#标记坐标点

img.save(filepath)
img.close()

 

标点画线后:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值