国产无码免费,人妻口爆,国产V在线,99中文精品7,国产成人无码AA精品一,制度丝袜诱惑av,久久99免费麻辣视频,蜜臀久久99精品久久久久久酒店
        訂閱
        糾錯
        加入自媒體

        如何使用OpenCV和DLIB在圖像上操作人臉?

        這是一個關于如何使用OpenCV和DLIB在圖像上應用虛擬唇膏的快速教程。同樣的原理也可以推廣到其他面部特征,比如某人的眼睛、鼻子、下巴……。為了獲得上圖所示的結果,我們需要執行以下一系列步驟:檢測面部標志使用由嘴標志組成的凸多邊形創建掩碼使用形態學操作增強掩碼,并使其模糊,以獲得更好的混合效果隔離嘴唇和臉部將顏色變換應用于嘴唇把嘴唇和臉放在一起首先要做的是檢測人臉的面部標志。庫Dlib提供了一種方便的方法來實現這一點;但是,請記住,被攝對象的面部需要面對攝影機。如果頭部姿勢不正確,檢測結果將不好。

        在這個例子中,我們只對嘴唇的點感興趣。下圖顯示了Dlib返回的面部標志點的索引。如你所見,我們對48點到60點(嘴唇的外部“輪廓”)感興趣。

        利用這些點,我們可以制作一個掩碼,讓我們在不影響面部整體外觀的情況下處理嘴唇的顏色。但是,等一下。在開始操作這些顏色之前,我們需要改進掩碼。在這個例子中,一個帶有4x4矩形內核的形態學閉合操作就足夠了。注意下面的圖片,這個步驟填補了由cv2生成的原始多邊形右上角的一個空白。右:使用唇部創建的凸多邊形/左:關閉操作后的多邊形

        為了獲得自然的效果,我們還需要模糊掩碼。模糊掩碼將產生更好的混合效果。我們將cv2.GaussianBlur應用于掩碼。最后,我們反轉掩碼(我們需要兩個,一個用于嘴唇,一個用于面部)。右:模糊掩碼/左:模糊反向掩碼

        我們將應用這些掩碼,方法是將它們從0–255(uint8)轉換為0–1(float)范圍,然后將它們與圖像相乘。右下方的圖像是原始圖像乘以反轉掩碼。左側的圖像是原始圖像上的顏色變換乘以掩碼的結果。顏色變換由cv2.applyColorMap(im, cv2.COLORMAP_INFERNO)給出。右:原始圖像和反向模糊掩碼的位與運算/左:顏色變換圖像和模糊掩碼的位與運算

        現在,剩下要做的就是將這兩個圖像相加。右:原始圖像/左:結果圖像

        這是代碼。

        import cv2

        import dlib

        import faceBlendCommon as face

        import numpy as np


        # 加載圖像

        im = cv2.imread("cv2/girl-no-makeup.jpg")


        # 檢測人臉關鍵點

        PREDICTOR_PATH = r"C:Users elipe.cunhaDocuments envcv2week1-pytondatamodelsshape_predictor_68_face_landmarks.dat"

        faceDetector = dlib.get_frontal_face_detector()

        landmarkDetector = dlib.shape_predictor(PREDICTOR_PATH)

        landmarks = face.getLandmarks(faceDetector, landmarkDetector, im)


        # 為嘴唇制作一個掩碼

        lipsPoints = landmarks[48:60]

        mask = np.zeros((im.shape[0], im.shape[1], 3), dtype=np.float32)

        cv2.fillConvexPoly(mask, np.int32(lipsPoints), (1.0, 1.0, 1.0))

        mask = 255*np.uint8(mask)


        # 應用閉合操作改善掩碼

        kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (40,40))

        mask = cv2.morphologyEx(mask, cv2.MORPH_CLOSE, kernel, 1)


        # 模糊掩碼以獲得自然效果

        mask = cv2.GaussianBlur(mask,(15,15),cv2.BORDER_DEFAULT)


        # 計算逆掩碼

        inverseMask = cv2.bitwise_not(mask)


        # 將掩碼轉換為浮點以執行混合

        mask = mask.astype(float)/255

        inverseMask = inverseMask.astype(float)/255

        # 為嘴唇應用顏色貼圖

        lips = cv2.applyColorMap(im, cv2.COLORMAP_INFERNO)


        # 將嘴唇和人臉轉換為0-1范圍

        lips = lips.astype(float)/255

        ladyFace = im.astype(float)/255


        # 用掩碼調整嘴唇和臉

        justLips = cv2.multiply(mask, lips)

        justFace = cv2.multiply(inverseMask, ladyFace)

        # 加上臉和嘴唇

        result = justFace + justLips

        # 顯示結果

        cv2.imshow("", result)

        cv2.waitKey(0)


        聲明: 本文由入駐維科號的作者撰寫,觀點僅代表作者本人,不代表OFweek立場。如有侵權或其他問題,請聯系舉報。

        發表評論

        0條評論,0人參與

        請輸入評論內容...

        請輸入評論/評論長度6~500個字

        您提交的評論過于頻繁,請輸入驗證碼繼續

        暫無評論

        暫無評論

          掃碼關注公眾號
          OFweek人工智能網
          獲取更多精彩內容
          文章糾錯
          x
          *文字標題:
          *糾錯內容:
          聯系郵箱:
          *驗 證 碼:

          粵公網安備 44030502002758號

          主站蜘蛛池模板: 成人在线超碰| 静宁县| 亚洲熟妇无码成人A片| 男人天堂二区| 亚洲AV秘?无码一区二三月夜| 欧美整片sss| 免费AV在线| 精品久热| 欧美成人精品| 亚洲中文字幕日韩| 人人操超碰| 开封市| 亚洲制服丝袜无码| 青青伊人网| 国产VA网站| 岛国免费视频| 超碰人人人人| 桃花岛av| 无线亚洲成人| 91在线播| 欧美成人无码国产精品嫩草开发| 午夜色区| 国产乱人伦无码视频| 无码天堂| 麻豆AV在线| 99在线观看视频| 中文字幕一区二区无码成人| 无码天堂| jizz免费| 性色综合| www.yw尤物| 甘泉县| 亚洲免费一区二区| 平和县| 国产乱妇无码毛片A片在线看下载| 长汀县| 国产又大又粗| 夜夜嗨AV一区二区三区网页| 国产精品伦子伦露脸| 密山市| 中文字幕有码在线观看|