Python 3.x 如何求图像的一阶和二阶导数矩阵

Python 3.x 如何求图像的一阶和二阶导数矩阵,python-3.x,opencv,gaussian,Python 3.x,Opencv,Gaussian,我试图计算图像的梯度方向,在第一部分中,我需要计算图像的一阶导数(水平方向和垂直方向),因此我在scipy模块中应用了高斯滤波器以获得它,但我得到了一个错误“AttributeError:'int'object没有属性'shape'” 我使用的是python版本3.7.0,opencv版本是3.4.2 功能文档如下所示: g_x=np.zero(图像新形状) 高斯滤波器(图像新,2*np.sqrt(2),(0,1),1,g_x) 这是正确的吗?或者如何计算图像的一阶导数(和二阶导数)。要获得图

我试图计算图像的梯度方向,在第一部分中,我需要计算图像的一阶导数(水平方向和垂直方向),因此我在scipy模块中应用了高斯滤波器以获得它,但我得到了一个错误“AttributeError:'int'object没有属性'shape'”

我使用的是python版本3.7.0,opencv版本是3.4.2

功能文档如下所示:

g_x=np.zero(图像新形状)
高斯滤波器(图像新,2*np.sqrt(2),(0,1),1,g_x)

这是正确的吗?或者如何计算图像的一阶导数(和二阶导数)。

要获得图像的一阶导数,可以在scipy中应用高斯滤波器,如下所示

from scipy.ndimage import gaussian_filter, laplace

image_first_derivative = gaussian_filer(image, sigma=3)
如果sigma是一个单一的数字,那么将在所有方向上计算Derivative。指定将西格玛作为序列传递的方向

上面是用
sigma=(11,0)
在x方向拍摄的图像的一阶导数。下图是在y方向上用
sigma=(0,11)

您可以相应地选择sigma的值。为了计算二阶导数,可以使用拉普拉斯算子

image_sec_derivative = laplace(image)

您可以将其链接到旧wiki内容的存档转储---有关当前材料,请参阅。你能编辑你的问题以包含你正在使用的python和opencv版本吗?我刚刚编辑了我的问题!x导数的sobel_h为Thxse,y导数的sobel_v为Thxse。谢谢你的回答,但是如何计算水平或垂直方向上的一阶导数?