Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有一种简单的方法将纹理映射到不同的;紫外线“;python中的系统?_Python_Opencv_Machine Learning_Computer Vision_Dlib - Fatal编程技术网

是否有一种简单的方法将纹理映射到不同的;紫外线“;python中的系统?

是否有一种简单的方法将纹理映射到不同的;紫外线“;python中的系统?,python,opencv,machine-learning,computer-vision,dlib,Python,Opencv,Machine Learning,Computer Vision,Dlib,我真的不知道“UV”这个词是否正确,因为我来自Unity世界,正在尝试用python编写一些东西。我想做的是拍一张人类的照片(从网络摄像头中),拍摄他们的地标/关键特征的位置,并改变第二张图像(另一个人的图像),使他们的关键特征位于同一位置,同时变形/扭曲他们脸内的皮肤部分,以适应第一张输入图像(网络摄像头)的位置中国的地标。在我这样做后,我需要把脸放回非网络摄像头输入。(我很抱歉这让我听起来像个连环杀手,拉长了脸,割破了脸)我知道这可能没有任何意义,但我希望它看起来像 我已经用DLIB和Ope

我真的不知道“UV”这个词是否正确,因为我来自Unity世界,正在尝试用python编写一些东西。我想做的是拍一张人类的照片(从网络摄像头中),拍摄他们的地标/关键特征的位置,并改变第二张图像(另一个人的图像),使他们的关键特征位于同一位置,同时变形/扭曲他们脸内的皮肤部分,以适应第一张输入图像(网络摄像头)的位置中国的地标。在我这样做后,我需要把脸放回非网络摄像头输入。(我很抱歉这让我听起来像个连环杀手,拉长了脸,割破了脸)我知道这可能没有任何意义,但我希望它看起来像

我已经用
DLIB
OpenCV
完成了面部标记和切割,但我需要找到一种方法来获取这些“切割”面部块并“动态”拉伸它们。我所说的动态的意思是,你不只是通过在1或2个轴上线性地重新调整它的大小来放置一个遮罩。你可以选择遮罩的一个点并改变它,我想这样做,但我的遮罩是我的切割块,该点是该块的一部分,需要改变该块以符合生成的地标的位置。我知道这是一个很难思考的话题,如果你们需要任何澄清,尽管问。我的代码:

import cv2
import numpy as np
import dlib

cap = cv2.VideoCapture(0)

detector = dlib.get_frontal_face_detector()
predictor = dlib.shape_predictor("shape_predictor_68_face_landmarks.dat")

while True:
    _, frame = cap.read()
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    faces = detector(gray)
    for face in faces:
        x1 = face.left()
        y1 = face.top()
        x2 = face.right()
        y2 = face.bottom()
        cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 3)

        landmarks = predictor(gray, face)



        for n in range(0, 68):
            x = landmarks.part(n).x
            y = landmarks.part(n).y
            cv2.circle(frame, (x, y), 4, (255, 0, 0), -1)

    cv2.imshow("Frame", frame)

    key = cv2.waitKey(1)
    if key == 27:
        break


编辑:不,我不是连环杀手

如果需要使用两组关键点使源图像像橡胶板一样变形,则需要使用或更好地使用分段仿射变换。最后一种更类似于纹理光栅化方法(三角形到三角形纹理变换)

什么样的?