OpenCV Python – 如何将彩色图像转换为二值图像?


我们使用cv2.threshold()将灰度图像转换为二值图像。要将彩色图像转换为二值图像,我们首先使用cv2.cvtColor()将彩色图像转换为灰度图像,然后对灰度图像应用cv2.threshold()

步骤

可以按照以下步骤将彩色图像转换为二值图像:

  • 导入所需的库。在以下所有示例中,所需的 Python 库是OpenCV。确保您已安装它。

  • 使用cv2.imread()读取输入图像。使用此方法读取的 RGB 图像是 BGR 格式。可以选择将读取的 BGR 图像分配给 img。

  • 现在,使用cv2.cvtColor()函数,将此 BGR 图像转换为灰度图像,如下所示。可以选择将转换后的灰度图像分配给 gray。

  • 对灰度图像 gray 应用阈值处理cv2.threshold()将其转换为二值图像。调整第二个参数 (threshValue) 以获得更好的二值图像。

  • 显示转换后的二值图像。

让我们看一些例子,以便更清楚地理解这个问题。

我们将在下面的示例中使用以下图像作为输入文件


示例

在这个 Python 程序中,我们将彩色图像转换为二值图像。我们还显示二值图像。

# import required libraries import cv2 # load the input image img = cv2.imread('architecture1.jpg') # convert the input image to grayscale gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # apply thresholding to convert grayscale to binary image ret,thresh = cv2.threshold(gray,70,255,0) # Display the Binary Image cv2.imshow("Binary Image", thresh) cv2.waitKey(0) cv2.destroyAllWindows()

输出

运行上述程序后,将生成以下输出窗口,显示二值图像。


示例

在这个示例中,我们将彩色图像转换为二值图像。我们还显示原始图像、灰度图像和二值图像。

# import required libraries import cv2 import matplotlib.pyplot as plt # load the input image img = cv2.imread('architecture1.jpg') # convert the input image to grayscale gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # apply thresholding to convert grayscale to binary image ret,thresh = cv2.threshold(gray,70,255,0) # convert BGR to RGB to display using matplotlib imgRGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # display Original, Grayscale and Binary Images plt.subplot(131),plt.imshow(imgRGB,cmap = 'gray'),plt.title('Original Image'), plt.axis('off') plt.subplot(132),plt.imshow(gray,cmap = 'gray'),plt.title('Grayscale Image'),plt.axis('off') plt.subplot(133),plt.imshow(thresh,cmap = 'gray'),plt.title('Binary Image'),plt.axis('off') plt.show()

输出

运行上述程序后,将生成以下输出窗口,显示原始图像、灰度图像和二值图像。


注意灰度图像和二值图像之间的区别。二值图像只有两种颜色:白色和黑色。二值图像的像素值要么为 0(黑色),要么为 255(白色)。

更新于:2022年12月2日

24K+ 次查看

启动您的 职业生涯

完成课程获得认证

开始学习
广告