21xrx.com
2024-12-22 18:02:37 Sunday
登录
文章检索 我的文章 写文章
使用OpenCV实现图像二值化的代码
2023-08-22 14:32:05 深夜i     --     --
OpenCV 图像 二值化 代码 实现

图像二值化是图像处理的一种基本操作,它可以将图像转换为只有两种颜色的图像。在这篇文章中,我们将使用OpenCV库来实现图像二值化的代码。

首先,我们需要导入OpenCV库并读取要处理的图像。可以使用cv2.imread()函数来读取图像,并使用cv2.IMREAD_GRAYSCALE参数将其转换为灰度图像。代码如下:


import cv2

# 读取图像

image = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)

接下来,我们可以使用cv2.threshold()函数将图像进行阈值化处理。该函数需要传入两个参数:图像和阈值。阈值可以是一个数值,也可以是一个包含两个数值的元组。如果设置为一个数值,那么大于该数值的像素值将被设为255(白色),小于或等于该数值的像素值将被设为0(黑色);如果设置为一个包含两个数值的元组,那么大于第一个数值、小于第二个数值的像素值将被设为255,其他像素值将被设为0。

以下是使用一个固定阈值对图像进行二值化的代码示例:


# 二值化处理

threshold_value = 127

_, threshold_image = cv2.threshold(image, threshold_value, 255, cv2.THRESH_BINARY)

在代码中,我们使用固定阈值127对图像进行二值化处理。函数返回一个二元组,第一个元素是阈值,第二个元素是处理后的图像。

除了固定阈值外,还可以使用自适应阈值。自适应阈值是根据图像局部区域的像素值动态确定的,可以处理光照不均匀的图像。以下是使用自适应阈值对图像进行二值化的代码示例:


# 自适应阈值二值化处理

_, threshold_image = cv2.adaptiveThreshold(image, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 11, 2)

在代码中,我们使用ADAPTIVE_THRESH_MEAN_C方法计算局部均值作为阈值,并设置窗口大小为11×11(在奇数值情况下,窗口大小将向下取整)。

最后,我们可以使用cv2.imshow()函数显示原始图像和处理后的图像,并使用cv2.waitKey()函数等待键盘输入来关闭窗口。代码如下:


# 显示图像

cv2.imshow('Original Image', image)

cv2.imshow('Threshold Image', threshold_image)

cv2.waitKey(0)

cv2.destroyAllWindows()

在代码中,我们首先显示原始图像,然后显示处理后的图像。窗口显示后,程序将等待键盘输入。按下任意键后,窗口将被关闭。

通过以上代码,我们可以使用OpenCV轻松实现图像二值化的功能。无论是固定阈值还是自适应阈值,二值化处理都可以帮助我们简化图像分析和处理的任务。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复