gpt4 book ai didi

python - Sobel 算子 - Opencv Python

转载 作者:太空宇宙 更新时间:2023-11-03 21:22:43 26 4
gpt4 key购买 nike

Img 是我输入的 RGB 图像

import cv2
import numpy as np
img = cv2.imread("Lenna.png")
black = cv2.cvtColor(img , cv2.cv.CV_BGR2GRAY)

现在我想使用 filter2D 对其应用 sobel 运算符

sobel = np.array([[-1 , 0 , 1] , [-2 , 0 , 2] , [-1 , 0 , 1] ])
dest = cv2.filter2D(black , -1 , sobel)

根据文档的 -1 参数是图像的深度,我相信它是 'uint8' 或 cv2.cv.CV_8U ,当我执行 np.max(dest) 时,它会给我 255 ,这是预期的.

但是,当我将深度指定为 cv2.cv.CV_32F 时,即

dest = cv2.filter2D(black , cv2.cv.CV_32F , sobel)

然后执行 np.max(dest) ,它给了我一个大于 255 的不同值。有人可以解释原因吗?

最佳答案

函数 filter2D 以全精度执行图像过滤,然后将结果值饱和到目标数据类型。实际上,输出图像包含更大范围的值。当您指定类型 CV_32F 时,输出值将保持原样。它们可能包含大于 255 且小于 0 的值。但是当类型为 CV_8U 时,结果将限制在 CV_8U 数据类型的范围内。所有负值变为 0,所有大于 255 的值将变为 255。

关于python - Sobel 算子 - Opencv Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14769180/

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