gpt4 book ai didi

python - Python 中的 imgradient matlab 等价物

转载 作者:太空狗 更新时间:2023-10-30 02:07:49 25 4
gpt4 key购买 nike

我正在搜索 Python 中的 imgradient MATLAB 等价物。我知道 cv2.Sobel()cv2.Laplacian() 但它不起作用,因为 imgradient 在 MATLAB 中工作。如果我能得到 imgradient.m 函数的源代码,那也会有很大的帮助。

此外,我知道 cv2.Scharr() 也可以使用,但我不确定我应该在参数中输入什么值才能获得与 MATLAB 中的 imgradient 等效的结果?

最佳答案

由于版权原因,我们不允许发布您必须在 MATLAB 中获得许可的任何工具箱中的任何代码。相反,我能做的是提供执行等效操作的代码。 imgradient 简单地返回边缘贴图的大小和角度。您需要做的就是分别在xy 方向应用cv2.Sobel,然后自己计算大小和角度。您可以使用标准公式执行此操作:

magnitude = sqrt(Gx.^2 + Gy.^2);
angle = atan2(Gy, Gx);

GxGy分别是xy方向的导数,或者说的输出每个方向的 code>cv2.Sobel。请注意,atan2 将为您提供以弧度为单位的角度。 MATLAB 以度数报告角度,因此您必须另外乘以 180/pi

假设您的图像存储在 img 中。然后,您将在此图像上运行 cv2.Sobel 两次,确保在每次调用时,您指定要查找的导数的方向。之后,您自己计算大小和角度。因此:

import cv2
import numpy as np

img = cv2.imread('....') # Read in the image
sobelx = cv2.Sobel(img,cv2.CV_64F,1,0) # Find x and y gradients
sobely = cv2.Sobel(img,cv2.CV_64F,0,1)

# Find magnitude and angle
magnitude = np.sqrt(sobelx**2.0 + sobely**2.0)
angle = np.arctan2(sobely, sobelx) * (180 / np.pi)

关于python - Python 中的 imgradient matlab 等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47835138/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com