我是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)
那么有人可以解释一下这个错误意味着什么,如果我必须更改参数,它们应该具有哪个值?
答案 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
版本中修复。