详解Python+OpenCV实现图像二值化
什么是图像二值化?
图像二值化是将一幅灰度图像的像素值变换为0或255(或1和0)两种数值中的一种的过程。这通常是为了简化图像分析过程。二值化是很多图像分析和处理算法的预处理步骤。
Python+OpenCV实现图像二值化
图像二值化可以使用Python和OpenCV进行实现。
在Python中,OpenCV是一个很流行的图像处理库。它可以实现数字图像处理、计算机视觉等功能。在本文中,我们将使用Python和OpenCV实现图像二值化。
首先,需要确保Python和OpenCV已经成功安装。
然后,我们可以使用下面的代码加载和显示一个图像:
import cv2
# 读入灰度图像
img_gray = cv2.imread('test.jpg', cv2.IMREAD_GRAYSCALE)
# 显示图像
cv2.imshow('gray image', img_gray)
# 等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()
可以看到,cv2.imread()
函数可以读取图像,并将其转换为灰度图像。然后,使用cv2.imshow()
函数显示图像,使用cv2.waitKey()
函数等待键盘事件,最后使用cv2.destroyAllWindows()
函数关闭所有图像窗口。
接下来,我们可以使用下面的代码将图像进行二值化:
import cv2
# 读入灰度图像
img_gray = cv2.imread('test.jpg', cv2.IMREAD_GRAYSCALE)
# 二值化
thresh, img_binary = cv2.threshold(img_gray, 0, 255, cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)
# 显示图像
cv2.imshow('binary image', img_binary)
# 等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()
cv2.threshold()
函数可以将图像二值化。它接收以下参数:要处理的图像、用于判断阈值的像素值、小于阈值时的像素值、大于阈值时的像素值、二值化的类型。
在上面的代码中,我们使用了cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU
类型进行二值化。
二值化后的图像可以使用cv2.imshow()
函数显示。
示例1:手写数字识别
手写数字识别是一个常见的机器学习任务。下面的代码展示了如何将手写数字图像进行二值化,以便用于机器学习任务:
import cv2
# 读取手写数字图像
img_gray = cv2.imread('digit.jpg', cv2.IMREAD_GRAYSCALE)
# 二值化
_, img_binary = cv2.threshold(img_gray, 0, 255, cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)
# 显示原始图像和二值化后的图像
cv2.imshow('gray image', img_gray)
cv2.imshow('binary image', img_binary)
# 等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()
示例2:图像去噪
二值化可以帮助我们将图像分割成具有明确轮廓的区域。在某些情况下,需要对图像进行降噪处理,以便更好地分割图像。下面的代码演示了如何使用二值化进行图像去噪:
import cv2
# 读取含噪图像
img = cv2.imread('noisy_image.jpg')
# 去噪
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
img_gray = cv2.GaussianBlur(img_gray, (5,5), 0)
# 二值化
_, img_binary = cv2.threshold(img_gray, 0, 255, cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)
# 显示原始图像和去噪后的图像
cv2.imshow('original image', img)
cv2.imshow('denoised image', img_gray)
cv2.imshow('binary image', img_binary)
# 等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()
总结
本文介绍了Python和OpenCV实现图像二值化的方法。我们可以使用cv2.imread()
函数加载图像,使用cv2.threshold()
函数将图像进行二值化,并使用cv2.imshow()
函数显示图像。可以将二值化应用于各种机器学习和图像处理任务中。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Python+OpenCV实现图像二值化 - Python技术站