gpt4 book ai didi

python - 绘制直方图以找出图像上梯度的最大强度

转载 作者:行者123 更新时间:2023-12-02 16:08:49 25 4
gpt4 key购买 nike

我有这张图

source

其中我想使用 sobel 过滤器执行梯度计算:

kx = np.array([[-1, 0, 1], [-2, 0, 2], [-1, 0, 1]], np.float32)
ky = np.array([[1, 2, 1], [0, 0, 0], [-1, -2, -1]], np.float32)

ix = ndimage.filters.convolve(img, kx)
iy = ndimage.filters.convolve(img, ky)

g = np.hypot(ix, iy)
g = g / g.max() * 255
theta = np.arctan2(iy, ix)

我想绘制 g将值转换为直方图,以计算出图像中梯度强度的范围。当我尝试时 histr = cv2.calcHist([g], [0], None, [256], [0, 256]) ,它给了我以下错误:

TypeError: images data type = 23 is not supported



我想知道,如何在直方图中绘制梯度强度以找出范围。

最佳答案

如错误消息所示,您的 g 的类型似乎不受支持。我们来看看 cv2.calcHist 的文档:

images Source arrays. They all should have the same depth, CV_8U, CV_16U or CV_32F, and the same size. Each of them can have an arbitrary number of channels.



按原样运行您的代码, g类型为 np.float16 .因此,以下所有更正都有效:

histr = cv2.calcHist([g.astype(np.uint8)], [0], None, [256], [0, 256])

histr = cv2.calcHist([g.astype(np.uint16)], [0], None, [256], [0, 256])

histr = cv2.calcHist([g.astype(np.float32)], [0], None, [256], [0, 256])

只需选择最适合您需求的一种。

希望有帮助!

关于python - 绘制直方图以找出图像上梯度的最大强度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59675187/

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