我想从现有的等高线列表中创建一个四边形等高线列表。我是一个相当新的编码,所以请与我尝试的代码,我将使用演示的目标忍受。你知道吗
#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)
在Python中通常是通过使用理解来实现的:
您甚至可以通过将
aproximations
嵌套在quads
理解中,在单个语句中实现这一点,但这并不能提高可读性。你知道吗在Python中,只有当读取变得更容易时,写时保存才被认为是可以的。你知道吗
注意,还可以使用生成器表达式而不是第一个表达式的理解,方法是使用正则括号
(...)
而不是围绕它的方括号[...]
。你知道吗在这种情况下,其意义是使
approximations
的计算变得“懒惰”,如果原始列表很长,则节省内存。你知道吗相关问题 更多 >
编程相关推荐