我使用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输出的负值显示为灰色吗?或者当我们显示图像时如何处理负值?
1条答案
按热度按时间mwecs4sa1#
在uint8的情况下,负值被剪切并设置为0。您在这里看到的是一个不完整的结果,缺少信息。您不应该这样做。
在float32的情况下,零显示为中灰色,负值较暗,正值较亮。