将自适应阈值应用于灰度图像

时间:2016-12-25 09:29:22

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

我有一个灰度'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)

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

1 个答案:

答案 0 :(得分:0)

错误在于第二个代码片段:

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),因此后续的自适应阈值功能未执行。