缓冲区和内存视图在python中的相同维度中不是连续的

时间:2017-09-28 13:33:45

标签: python-2.7 scikit-image hough-transform valueerror

我是Python的新手,我试图在下图中检测到一个椭圆:https://i.stack.imgur.com/5ybMh.jpg

但是当我使用这段代码时:

SendUrlEncodedAsync

我得到了ValueError:

  

缓冲区和内存视图在同一维度上不是连续的。

我使用的是scikit-image版本0.12.3。 我认为min_size = 0和max_size = 0存在问题,但是我不确定错误是否存在这两个参数之间的上下文。在文档中,我无法找到有关参数的非常有用的信息。 (http://scikit-image.org/docs/dev/api/skimage.transform.html?highlight=transform#skimage.transform.hough_ellipse

那么有人可以解释一下这个错误意味着什么,如果我必须更改参数,它们应该具有哪个值?

1 个答案:

答案 0 :(得分:1)

我终于在你的代码中发现了这个问题! :)

使用您在图片的canny功能中设置的参数,edges图片为空! (全黑)

这似乎是hough_ellipse函数的问题,您可以通过尝试运行以下内容来查看:

import numpy as np
from skimage.transform import hough_ellipse
result = hough_ellipse(np.zeros((100, 100)))

如果更改canny函数中的参数以获得至少几个轮廓,则不再引发错误。我相信这种行为是一个错误(它应该只返回一个空列表),我将报告它。

此后是我可以无误地运行的代码。 Canny算法和椭圆的参数是随机的。

from skimage import io
from skimage import data, color
from skimage.feature import canny
from skimage.transform import hough_ellipse

image_rgb = io.imread('5ybMh.jpg',)

image_gray = color.rgb2gray(image_rgb)
edges = canny(image_gray, low_threshold=.4, high_threshold=.9)

result = hough_ellipse(edges, threshold=20, min_size=10)

另一方面,我发现hough_ellipse功能对某些人而言非常缓慢,而且#34;拥挤"边缘地图。如果您遇到同样的问题,可能需要进行某种工件清理(例如删除非常短的边缘)。

在第二面注释中,skimage版本0.13.0已经用完,并且使用最新版本的库总是好的;)

注意:此错误已在库的0.14.x版本中修复。