1. 程式人生 > 實用技巧 >用python給女朋友照片加上個性相框,學會等著她誇你!

用python給女朋友照片加上個性相框,學會等著她誇你!

講解下如何給女朋友照片加上個性相框,學會讓她誇你。

素材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 就可以啦

得到的圖


當然也可以隨意描點

哈哈哈哈 非常簡單 有沒有 獲取原始碼打包工具加群:1136192749