python 为什么uint8和float32的边缘检测结果看起来不同?

wkftcu5l  于 2023-02-28  发布在  Python
关注(0)|答案(1)|浏览(131)

我使用OpenCV的Sobel滤波器进行边缘检测。我想知道为什么当我运行下面两行时输出看起来不同。

# uint8 output
img_uint8 = cv2.Sobel(img_gray, cv2.CV_8U, dx=1, dy=0, ksize=5)

# float32 output
img_float32 = cv2.Sobel(img_gray, cv2.CV_32F, dx=1, dy=0, ksize=5)

以下是2个输出的外观:

float32的输出大部分显示为灰色,而uint8的输出大部分显示为黑色。float32输出的负值显示为灰色吗?或者当我们显示图像时如何处理负值?

mwecs4sa

mwecs4sa1#

在uint8的情况下,负值被剪切并设置为0。您在这里看到的是一个不完整的结果,缺少信息。您不应该这样做。
在float32的情况下,零显示为中灰色,负值较暗,正值较亮。

相关问题