当前位置: 首页>>代码示例>>Python>>正文


Python cv2.Subdiv2D方法代码示例

本文整理汇总了Python中cv2.Subdiv2D方法的典型用法代码示例。如果您正苦于以下问题:Python cv2.Subdiv2D方法的具体用法?Python cv2.Subdiv2D怎么用?Python cv2.Subdiv2D使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在cv2的用法示例。


在下文中一共展示了cv2.Subdiv2D方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: measure_triangle

# 需要导入模块: import cv2 [as 别名]
# 或者: from cv2 import Subdiv2D [as 别名]
def measure_triangle(image, points):
    rect = (0, 0, image.shape[1], image.shape[0])
    sub_div = cv2.Subdiv2D(rect)

    for p in points:
        sub_div.insert(p)

    triangle_list = sub_div.getTriangleList()

    triangle = []
    pt = []

    for t in triangle_list:
        pt.append((t[0], t[1]))
        pt.append((t[2], t[3]))
        pt.append((t[4], t[5]))

        pt1 = (t[0], t[1])
        pt2 = (t[2], t[3])
        pt3 = (t[4], t[5])

        if rect_contains(rect, pt1) and rect_contains(rect, pt2) and rect_contains(rect, pt3):
            ind = []
            for j in range(0, 3):
                for k in range(0, len(points)):
                    if abs(pt[j][0] - points[k][0]) < 1.0 and abs(pt[j][1] - points[k][1]) < 1.0:
                        ind.append(k)
            if len(ind) == 3:
                triangle.append((ind[0], ind[1], ind[2]))

        pt = []

    return triangle 
开发者ID:gyp03,项目名称:yry,代码行数:35,代码来源:triangulation.py

示例2: calculateDelaunayTriangles

# 需要导入模块: import cv2 [as 别名]
# 或者: from cv2 import Subdiv2D [as 别名]
def calculateDelaunayTriangles(rect, points):
        def rectContains(point, rect):
            if point[0] < rect[0] or point[0] > rect[2]:
                return False
            elif point[1] < rect[1] or point[1] > rect[3]:
                return False
            return True  
        subDiv = cv2.Subdiv2D(rect)
        for point in points:
            subDiv.insert((point[0], point[1]))
        triangleList = subDiv.getTriangleList()
        return_mat = []
        for triangle in triangleList:
            pt = []
            pt.append((triangle[0], triangle[1]))
            pt.append((triangle[2], triangle[3]))
            pt.append((triangle[4], triangle[5])) 
            if rectContains(pt[0], rect) and rectContains(pt[1], rect) and rectContains(pt[2], rect):
                ind = []
                for i in range(3):
                    for j in range(len(points)):
                        if np.abs(pt[i][0] - points[j][0]) < 1.0 and np.abs(pt[i][1] - points[j][1]) < 1.0:
                            ind.append(j)
                if len(ind) == 3:
                    return_mat.append(ind)
        return return_mat 
开发者ID:yhswjtuILMARE,项目名称:Machine-Learning-Study-Notes,代码行数:28,代码来源:AverageFace.py

示例3: calculateDelaunayTriangles

# 需要导入模块: import cv2 [as 别名]
# 或者: from cv2 import Subdiv2D [as 别名]
def calculateDelaunayTriangles(rect, points):
    subdiv = cv2.Subdiv2D(rect);
    for p in points:
        subdiv.insert((p[0], p[1]));
    triangleList = subdiv.getTriangleList();
    delaunayTri = []

    for t in triangleList:
        pt = []
        pt.append((t[0], t[1]))
        pt.append((t[2], t[3]))
        pt.append((t[4], t[5]))

        pt1 = (t[0], t[1])
        pt2 = (t[2], t[3])
        pt3 = (t[4], t[5])

        if rectContains(rect, pt1) and rectContains(rect, pt2) and rectContains(rect, pt3):
            ind = []
            for j in range(0, 3):
                for k in range(0, len(points)):
                    if (abs(pt[j][0] - points[k][0]) < 1.0 and abs(pt[j][1] - points[k][1]) < 1.0):
                        ind.append(k)
            if len(ind) == 3:
                delaunayTri.append((ind[0], ind[1], ind[2]))

    return delaunayTri 
开发者ID:yhswjtuILMARE,项目名称:Machine-Learning-Study-Notes,代码行数:29,代码来源:FaceAverage.py

示例4: calculateDelaunayTriangles

# 需要导入模块: import cv2 [as 别名]
# 或者: from cv2 import Subdiv2D [as 别名]
def calculateDelaunayTriangles(rect, points):
    # create subdiv
    subdiv = cv2.Subdiv2D(rect);
    # Insert points into subdiv
    for p in points:
        subdiv.insert(p)

    triangleList = subdiv.getTriangleList();

    delaunayTri = []

    pt = []
    for t in triangleList:
        pt.append((t[0], t[1]))
        pt.append((t[2], t[3]))
        pt.append((t[4], t[5]))

        pt1 = (t[0], t[1])
        pt2 = (t[2], t[3])
        pt3 = (t[4], t[5])

        if rectContains(rect, pt1) and rectContains(rect, pt2) and rectContains(rect, pt3):
            ind = []
            # Get face-points (from 68 face detector) by coordinates
            for j in range(0, 3):
                for k in range(0, len(points)):
                    if (abs(pt[j][0] - points[k][0]) < 1.0 and abs(pt[j][1] - points[k][1]) < 1.0):
                        ind.append(k)
                        # Three points form a triangle. Triangle array corresponds to the file tri.txt in FaceMorph
            if len(ind) == 3:
                delaunayTri.append((ind[0], ind[1], ind[2]))

        pt = []
    return delaunayTri 
开发者ID:scalability4all,项目名称:voice-enabled-chatbot,代码行数:36,代码来源:faceSwap.py

示例5: makeDelaunay

# 需要导入模块: import cv2 [as 别名]
# 或者: from cv2 import Subdiv2D [as 别名]
def makeDelaunay(theSize1,theSize0,theList):

    # Check if a point is inside a rectangle
    def rect_contains(rect, point) :
        if point[0] < rect[0] :
            return False
        elif point[1] < rect[1] :
            return False
        elif point[0] > rect[2] :
            return False
        elif point[1] > rect[3] :
            return False
        return True

    # Write the delaunay triangles into a file
    def draw_delaunay(subdiv,dictionary1) :

        list4=[]

        triangleList = subdiv.getTriangleList();
        r = (0, 0, theSize1,theSize0)

        for t in triangleList :
            pt1 = (int(t[0]), int(t[1]))
            pt2 = (int(t[2]), int(t[3]))
            pt3 = (int(t[4]), int(t[5]))
            if rect_contains(r, pt1) and rect_contains(r, pt2) and rect_contains(r, pt3) :
                list4.append((dictionary1[pt1],dictionary1[pt2],dictionary1[pt3]))
        dictionary1={}

        return list4
    
    # Make a rectangle.
    rect = (0, 0, theSize1,theSize0)

    # Create an instance of Subdiv2D.
    subdiv = cv2.Subdiv2D(rect);

    # Make a points list and a searchable dictionary. 
    theList=theList.tolist()
    points=[(int(x[0]),int(x[1])) for x in theList]
    dictionary={x[0]:x[1] for x in list(zip(points,range(76)))}
    # Insert points into subdiv
    for p in points :
        subdiv.insert(p)
        
    # Make a delaunay triangulation list.
    list4=draw_delaunay(subdiv,dictionary);
    
    # Return the list.
    return list4

# makeDelaunay(1080,1440) 
开发者ID:cirbuk,项目名称:face-morphing,代码行数:55,代码来源:delaunay.py


注:本文中的cv2.Subdiv2D方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。