我看到了这个例子:OpenCV MSER detect text areas - Python
我尝试使用该代码,但它不起作用。 错误是:
hulls = [cv2.convexHull(p.reshape(-1, 1, 2)) for p in regions]
AttributeError: 'list' object has no attribute 'reshape'
变量p
来自哪里?
答案 0 :(得分:0)
整个构造[cv2.convexHull(p.reshape(-1, 1, 2)) for p in regions]
被称为'列表理解'。您可以在许多地方阅读更多关于它们的信息。
在您引用的代码中regions
是可以攻击的代码,例如列表。这意味着,当您撰写for p in regions
p
时,会假设regions
中的每个值,一次一个。那就是p
的来源。
由于p
参与列表理解,因此可以在表达式中使用它。在这种情况下,表达式为cv2.convexHull(p.reshape(-1, 1, 2))
。因此,整个构造的值是cv2.convexHull(p.reshape(-1, 1, 2))
中每个p
的{{1}}值。