将自适应阈值应用于灰度图像
Applying adaptive threshold to a grayscale image
我有一个灰度的 png 图像 'test.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)
现在我可以应用自适应阈值,但输出将是蓝色和红色图像,而不是黑白图像。有人可以帮忙吗?
错误出在第二个代码片段:
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),因此后续的自适应阈值函数没有执行。
我有一个灰度的 png 图像 'test.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)
现在我可以应用自适应阈值,但输出将是蓝色和红色图像,而不是黑白图像。有人可以帮忙吗?
错误出在第二个代码片段:
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),因此后续的自适应阈值函数没有执行。