📅  最后修改于: 2023-12-03 14:58:46.984000             🧑  作者: Mango
在计算机视觉和图像处理中,常常需要将彩色图转换为黑白图。在OpenCV中,我们可以使用cv2.cvtColor()函数轻松地完成这个任务。
在使用OpenCV之前,必须先安装它。安装过程可以参考官方文档:https://docs.opencv.org/master/d7/d9f/tutorial_linux_install.html。
安装完成后,我们需要在Python中导入OpenCV库:
import cv2
加载图像的方式有很多种,这里介绍其中一种。使用cv2.imread()函数可以从文件中读取图像,它的参数为文件名或路径:
img = cv2.imread('image.jpg')
转换成黑白图的方式有两种:灰度图和二值图。灰度图将彩色图像的每个像素转换成一个灰度值,而二值图将图像中的像素分为黑色和白色两个值。
在OpenCV中,将彩色图转换成灰度图非常简单,只需要调用cv2.cvtColor()函数,并将第二个参数设置为cv2.COLOR_BGR2GRAY:
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
将图像转换成二值图有很多方法,其中一种是使用阈值函数。这里介绍使用cv2.threshold()函数的方法。
# 转换成灰度图
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 阈值处理
ret, binary_img = cv2.threshold(gray_img, 127, 255, cv2.THRESH_BINARY)
其中,第二个参数127是阈值,所有灰度值大于等于127的像素都被标记为255(白色),而小于它的像素都被标记为0(黑色)。
最后,我们可以使用cv2.imshow()函数显示结果:
cv2.imshow('Color Image', img)
cv2.imshow('Gray Image', gray_img)
cv2.imshow('Binary Image', binary_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
其中,第一个参数为窗口名称,第二个参数为要显示的图像。cv2.waitKey()函数等待指定的毫秒数,或者等待用户按下某个键。cv2.destroyAllWindows()函数释放窗口和相关的内存空间。
完整代码:
import cv2
# 读取图像
img = cv2.imread('image.jpg')
# 转换成灰度图
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 阈值处理
ret, binary_img = cv2.threshold(gray_img, 127, 255, cv2.THRESH_BINARY)
# 显示结果
cv2.imshow('Color Image', img)
cv2.imshow('Gray Image', gray_img)
cv2.imshow('Binary Image', binary_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
以上就是将彩色图转换成黑白图的过程。