讲解下如何给女朋友照片加上个性相框,学会让她夸你。
。
素材1
相框
你的女朋友图
代码
import cv2
import numpy as np
def get_four_points(im):
data = {}
data['im'] = im.copy()
data['points'] = []
cv2.namedWindow("Image", 0)
cv2.imshow('Image',im)
#请注意你标记点的数据,是顺时针,需要与pst_src 方向一致
cv2.setMouseCallback("Image",mouse_handler,data)
cv2.waitKey(0)
#竖直方向堆叠起来;
points = np.vstack(data['points']).astype(float)
return points
#---第4步:主函数---
def main():
#美女照片读取,注意路径
img_src = cv2.imread("meinv.jpg")
size = img_src.shape
# 取得四个坐标
##需要注意一点,坐标 Pick 点的顺序须与记录替换图像顶点顺序一致,否则转换图会有偏差
pst_src = np.array(
[
[0,0],[size[1]-1,0],
[size[1]-1,size[0]-1],
[0,size[0]-1]
],dtype=float
)
#大图:相框,注意路径
img_dst = cv2.imread("xiangkuang.jpg")
print("点击bllboard的四个角,然后回车")#获取四个点
four_point = get_four_points(img_dst)
#Calculate Homography between source and destination points
#计算源点和目标点之间的单应性
h,status = cv2.findHomography(pst_src,four_point)
#透视变换(单应性)
im_temp = cv2.warpPerspective(img_src,h,(img_dst.shape[1],img_dst.shape[0]))
cv2.fillConvexPoly(img_dst,four_point.astype(int),0,16)
#照片叠加
img_dst = img_dst + im_temp
cv2.namedWindow("Image", 0)
cv2.imshow("Image",img_dst)
cv2.imwrite('Image.png',img_dst)#照片保存
cv2.waitKey(0)
#---第5步:调用main函数---
if __name__ =='__main__':
main()
效果展示
描绘啦四个点后,点击enter 就可以啦
得到的图
当然也可以随意描点
电气专业的计算机萌新,写博文不容易,如果你觉得对你有哟用,请点个赞支持下,谢谢