python用代码PS图片
程序员文章站
2022-04-05 19:42:48
...
博主曾经研究过用photoshop来ps图片,但是无奈对这个软件的天生免疫,始终学不会,所以今天就用代码来对图片进行ps。思想和技术很简单,就是利用numpy来找到需要ps的图片的数组,然后把它抠出来,再把要ps的图片的数组给放进去,就能进行简单的ps了。
在这里,我们需要用到三个库,numpy,cv2和matplotlib。
import numpy as np
import cv2
import matplotlib.pyplot as plt
# 我们来ps金三胖同学
sanpang = cv2.imread('./jinzhengen.png')
plt.imshow(sanpang)
接着就是需要导入要ps的图片:
# 导入一个要替换的脸
dog = cv2.imread('dog.jpg')
plt.imshow(dog[:,:,::-1])
接着我们就开始计算图形的面积:
# 识别到人脸的区域, 需要算法
# 算法已经提供好了
#用算法计算人脸范围
face_zone = face_det.detectMultiScale(sanpang)
# 得到一个ndarray,是人脸的区域
face_zone
# face_zone的输出
array([[182, 62, 61, 61]], dtype=int32)
# 裁切狗脸
dog_face = dog[40:180,70:240]
# 压缩狗脸
dog_face2 = cv2.resize(dog_face,(61,61))
现在我们就可以把狗脸放进原图片里面:
for x,y,w,h in face_zone:
sanpang[y:y+w,x:x+h] = dog_face2
plt.imshow(sanpang[:,:,::-1])
这里我们就能得到经过ps过后的图片了