1

我正在开始一个计算机视觉项目,我需要计算水平和垂直 Sobel 的导数。我将 Python 与 Numpy 和 Scipy 一起使用,特别是 ndimage.filters 模块。

我无法理解返回值和输出参数之间的区别。

   output_x = np.zeros(image.shape)
   output_y = np.zeros(image.shape)
   filters.sobel(image, 1, output_x)
   filters.sobel(image, 0, output_y)

   return_val_1 = filters.sobel(image, axis=1)
   return_val_2 = filters.sobel(image, axis=0)

如果我绘制返回值图像和输出图像,我会得到不同的结果。为什么?你能帮我么?我很困惑。

4

2 回答 2

0

传入一个输出数组会将结果存储在该数组中,而不是创建一个新数组。

当您需要就地操作以节省内存时,这非常方便。

当您指定一个output数组时,ndimage 函数返回None. 除此之外,没有任何区别。

于 2012-06-18T15:09:21.817 回答
0

问题是数据类型。

做什么_ni_support._get_outuptnp.zeros(input.shape, input.dtype.name),在哪里input.dtype.name是uint8。您所做的是np.zeros(input.shape),默认情况下数据类型是浮点数。

我遇到了同样的问题,并通过查看源代码来解决。

于 2017-01-06T01:38:48.823 回答