【问题标题】:Applying adaptive threshold to a grayscale image将自适应阈值应用于灰度图像
【发布时间】:2017-08-22 20:23:31
【问题描述】:

我有一个灰度“test.png”的 png 图像。我需要对这个图像应用自适应阈值。我正在使用 OpenCV。

image = cv2.imread('test_big.png')
im = cv2.adaptiveThreshold(image, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY_INV, 11, 2)

我无法应用自适应阈值,因为图像不是灰度图像。 所以我尝试将图像读取为灰度:

image = cv2.imread('test_big.png',1)

现在我可以应用自适应阈值,但输出将是蓝色和红色图像,而不是黑白图像。有人可以帮忙吗?

【问题讨论】:

    标签: python-2.7 image-processing opencv3.0 adaptive-threshold


    【解决方案1】:

    故障出在第二个代码sn-p:

    image = cv2.imread('test_big.png',1)
    

    虽然您说test_big.png 是灰度图像,但您已将其声明为具有三个通道的彩色图像(RGB)。

    因此您必须将代码更改为

    image = cv2.imread('test_big.png', 0)
    
    • 0 -> 灰度图像
    • 1 -> 彩色图像

    你也可以试试:

    cv2.imread('test_big.png', cv2.IMREAD_GRAYSCALE)

    底线是:虽然正在读取的图像是灰度图像,但在明确指定之前系统不会识别它。在您的情况下,您的图像是灰度图像,但由于您将其声明为彩色图像,因此它认为该图像具有三个通道 (RGB),因此没有执行后续的自适应阈值函数。

    【讨论】:

    • cv2.imread('test_big.png', cv2.IMREAD_GRAYSCALE) 将更具可读性和自我记录性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-28
    • 2011-09-23
    • 1970-01-01
    • 2012-11-03
    • 2016-02-03
    • 1970-01-01
    • 2020-05-27
    相关资源
    最近更新 更多