如何将图片阈值化多阈值化如何操作
图片阈值化是将图像中的像素分成两类(黑色和白色)的过程,通过确定一个阈值(threshold),将像素分成两类。多阈值化是将像素分成多个类别,可以用于图像分割等应用。
使用Python中的OpenCV库可以很方便地实现图像阈值化和多阈值化。
- 图像阈值化
图像阈值化的基本方法是使用cv2.threshold()函数,该函数有四个输入参数:
- img:源图像,必须为灰度图像
- thresh:阈值,当像素值大于阈值时被分为白色,否则为黑色
- maxval:当像素值大于阈值时赋予的值,通常为255
- type:阈值类型,有两种类型:cv2.THRESH_BINARY和cv2.THRESH_BINARY_INV。
示例代码:
import cv2
# 读取灰度图像
img = cv2.imread('lena.jpg', 0)
# 阈值化
ret, thresh = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)
# 显示图像
cv2.imshow('thresh', thresh)
cv2.waitKey(0)
cv2.destroyAllWindows()
- 多阈值化
多阈值化可以使用cv2.threshold()函数的第二个参数来实现。该参数可以是一个列表,其中包含多个阈值值。当像素值大于其中一个阈值时,被分配到相应的类别中。
示例代码:
import cv2
# 读取灰度图像
img = cv2.imread('lena.jpg', 0)
# 多阈值化
ret, thresh1 = cv2.threshold(img, 27, 255, cv2.THRESH_BINARY)
ret, thresh2 = cv2.threshold(img, 125, 255, cv2.THRESH_BINARY)
ret, thresh3 = cv2.threshold(img, 200, 255, cv2.THRESH_BINARY)
# 合并多个阈值结果
thresh = cv2.merge((thresh1, thresh2, thresh3))
# 显示图像
cv2.imshow('thresh', thresh)
cv2.waitKey(0)
cv2.destroyAllWindows()
以上代码将图像分成了三个阈值类别。多阈值化可以有更复杂的应用,例如使用K-means算法将图像分成多个类别。
原文地址: https://www.cveoy.top/t/topic/b7yo 著作权归作者所有。请勿转载和采集!