目录
一、阈值化
OpenCV是一个开源的计算机视觉库,可以用于图像处理和计算机视觉任务。阈值化是图像处理中的一种常见操作,可以将图像的像素值分成两个或多个不同的类别,通常是黑色和白色。
使用OpenCV进行阈值化的步骤如下:
-
导入OpenCV库:
import cv2
-
读取图像:
image = cv2.imread('image.jpg')
-
将图像转换为灰度图像:
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
-
对图像进行阈值化:
ret, threshold_image = cv2.threshold(gray_image, threshold_value, max_value, threshold_type)
gray_image
:要进行阈值化的灰度图像threshold_value
:阈值,用于将像素分为不同的类别。可以是一个具体的值,也可以是一个自适应的方法。max_value
:像素值超过阈值的像素被赋予的值。threshold_type
:阈值化的类型。可以是简单阈值化、自适应阈值化等。
阈值化后的图像将被存储在
threshold_image
中。 -
显示阈值化后的图像:
cv2.imshow('Threshold Image', threshold_image) cv2.waitKey(0) cv2.destroyAllWindows()
这将创建一个新的窗口,并显示阈值化后的图像。
二、二值化和示例
2.1 二值化
函数原型如下:
ret, binary_img = cv2.threshold(gray_img, threshold, max_value, threshold_type)
其中,threshold
是阈值,max_value
是像素值上限,threshold_type
是二值化的类型。
常用的threshold_type
有:
- cv2.THRESH_BINARY:二值化
- cv2.THRESH_BINARY_INV:反二值化
- cv2.THRESH_TRUNC:截断
- cv2.THRESH_TOZERO:零化
- cv2.THRESH_TOZERO_INV:反零化
个人笔记:
"""
简单阈值
"""
"""
分离图像中的背景和我们关注的物体 (处理灰度图)
函数原型:
ret,变量名 = cv2.threshold(src, thresh, maxval, type)
src(img): 输入图,只能输入单通道图像,通常来说为灰度图
thresh: 阈值
maxval: 当像素值超过了阈值(或者小于阈值),根据 type来决定,所赋予的值
type: 二值化操作的类型
常用二值化操作类型:
cv2.THRESH_BINARY
dst = (src > thresh) ? MAXVALUE:0 表示当像素值大于设定的阈值时,为 MAXVALUE,否则为 0
cv2.THRESH_BINARY_INV
dst = (src > thresh) ? 0:MAXVALUE 表示当设定的阈值大于像素值时,为 MAXVALUE,否则为 0
cv2.THRESH_TRUNC dst = (src > thresh) ? THRESH:SRC
cv2.THRESH_TOZERO dst = (src > thresh) ? SRC:0
cv2.THRESH_TOZERO_INV dst = (src > thresh) ? 0:SRC
二值化
cv2.threshold(img,127,255,cv.THRESH_BINARY)
二值化翻转
cv2.threshold(img,127,255,cv.THRESH_BINARY_INV)
"""
2.2 示例代码
import cv2 as cv
img = cv.imread("D:/Open_CV/OpenCV_demo/Pictures/4.png",0) # 图像的绝对路径
img = cv.resize(img,(480,480),interpolation=cv.INTER_AREA) # 图像缩放
ret,th1 = cv.threshold(img,127,255,cv.THRESH_BINARY) # 二值化
ret,th2 = cv.threshold(img,127,255,cv.THRESH_BINARY_INV) # 二值化翻转
cv.imshow("img",img)
cv.imshow("th1",th1)
cv.imshow("th2",th2)
cv.waitKey(0)
运行结果: