0

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

现在我可以申请自适应阈值,但输出将是蓝色和红色的图像,而不是黑色和白色。谁能帮忙?

回答

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

+0

'cv2.imread('test_big.png',cv2.IMREAD_GRAYSCALE)'会更具可读性和自我记录。 – Yigal

+0

@Yigal完成!编辑! –