首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MSER检测区域执行convexHull时出错

在MSER检测区域执行convexHull时出错
EN

Stack Overflow用户
提问于 2018-07-10 08:53:08
回答 1查看 302关注 0票数 0

我在Python中找到了一个例子。当我尝试运行它时,当它试图重塑一个list/numpy.array时,我会得到一个错误。错误是:

AttributeError:“列表”对象没有属性“重塑”

我怎样才能解决这个问题?在下面的简单代码中,我对发生错误的地方进行了注释:

代码语言:javascript
复制
import cv2
import numpy as np

img = cv2.imread('../images/Capture2.JPG', 0);
vis = img.copy()
mser = cv2.MSER_create()
regions = mser.detectRegions(img)

hulls = []
for p in regions:
    # Error on below line: 'AttributeError: 'list' object has no attribute 'reshape''
    hulls.append( cv2.convexHull(p.reshape(-1, 1, 2)) )

    # Note a numpy array isn't working either: error: 'ValueError: cannot reshape array of size 2605 into shape (1,2)'
    p = np.array(p)
    hulls.append( cv2.convexHull(p.reshape(-1, 1, 2)) ) 

cv2.polylines(vis, hulls, 1, (0, 255, 0))
cv2.imshow('img', vis)
cv2.waitKey(0)
cv2.destroyAllWindows()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-10 10:58:05

我认为mser.detectRegions(img)已经在不同的发行版本上发生了一些变化。在我的例子中,我有OpenCV版本:

代码语言:javascript
复制
import cv2
print cv2.__version__
>>> 3.3.0

mser.detectRegions(img)用两个值返回一个tupe,而不是一个返回值。您可以通过忽略tuple的第二个值来解决这个问题:

代码语言:javascript
复制
regions, _ = mser.detectRegions(img)

我提出了版本的问题,因为很多在线使用regions = mser.detectRegions(img)的例子。这可能会导致混乱。

到目前为止,我还不确定导致这种模棱两可的版本,所以我建议快速解决您的问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51260994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档