Python从现有lis创建新列表

2024-09-29 23:32:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从现有的等高线列表中创建一个四边形等高线列表。我是一个相当新的编码,所以请与我尝试的代码,我将使用演示的目标忍受。你知道吗

#Get Contours from an Image
(contours,hierarchy) = cv2.findContours(image,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)

#Work in progress
def ListQuads(contours,c=0):
    l = len(contours)  #Gets total number of contours
    while l > c:
        peri = cv2.arcLength(c, True)
        approx = cv2.approxPolyDP(c, 0.02 * peri, True)
        if len(approx) == 4:
            Quads[c] = approx
            c = c + 1
    return Quads

Quads = ListQuads(contours)

Tags: 代码true目标编码列表getlencv2
1条回答
网友
1楼 · 发布于 2024-09-29 23:32:50

在Python中通常是通过使用理解来实现的:

approximations = [cv2.approxPolyDP(c, 0.02 * cv2.arcLength(c, True), True)
                  for c in contours]
quads = [apx for apx in approximations if len(apx) == 4]

您甚至可以通过将aproximations嵌套在quads理解中,在单个语句中实现这一点,但这并不能提高可读性。你知道吗

在Python中,只有当读取变得更容易时,写时保存才被认为是可以的。你知道吗

注意,还可以使用生成器表达式而不是第一个表达式的理解,方法是使用正则括号(...)而不是围绕它的方括号[...]。你知道吗

在这种情况下,其意义是使approximations的计算变得“懒惰”,如果原始列表很长,则节省内存。你知道吗

相关问题 更多 >

    热门问题