cv.THRESH_BINARY、cv.THRESH_BINARY_INV、cv.THRESH_TRUNC、cv.THRESH_TOZERO、cv.THRESH_TOZERO_INV、cv.THRESH_MASK、cv.THRESH_OTSU分别代表什么意思
时间: 2024-01-11 13:05:22 浏览: 34
这些都是OpenCV中的图像二值化方法:
- cv.THRESH_BINARY:将像素值大于阈值的像素设置为最大值,小于等于阈值的像素设置为0。
- cv.THRESH_BINARY_INV:与cv.THRESH_BINARY相反,将像素值小于阈值的像素设置为最大值,大于等于阈值的像素设置为0。
- cv.THRESH_TRUNC:将像素值大于阈值的像素设置为阈值,小于等于阈值的像素保留原值。
- cv.THRESH_TOZERO:将像素值小于阈值的像素设置为0,大于等于阈值的像素保留原值。
- cv.THRESH_TOZERO_INV:与cv.THRESH_TOZERO相反,将像素值大于阈值的像素设置为0,小于等于阈值的像素保留原值。
- cv.THRESH_MASK:掩膜值,用于与像素值相乘,可以用于像素级别的操作。
- cv.THRESH_OTSU:大津法阈值,会自动计算图像阈值,适用于双峰图像。
相关问题
th_types=[cv.THRESH_BINARY,cv.THRESH_BINARY_INV,cv.THRESH_TRUNC,cv.THRESH_TOZERO,cv.THRESH_TOZERO_INV]什么意思
这是OpenCV中图像阈值化(thresholding)的不同类型:
- cv.THRESH_BINARY: 二值化阈值化,将像素值大于阈值的设置为最大值(一般为255),小于等于阈值的设置为0。
- cv.THRESH_BINARY_INV: 反向二值化阈值化,将像素值大于阈值的设置为0,小于等于阈值的设置为最大值。
- cv.THRESH_TRUNC: 截断阈值化,将像素值大于阈值的设置为阈值,小于等于阈值的保持不变。
- cv.THRESH_TOZERO: 零阈值化,将像素值小于等于阈值的设置为0,大于阈值的保持不变。
- cv.THRESH_TOZERO_INV: 反向零阈值化,将像素值大于阈值的设置为0,小于等于阈值的保持不变。
这些类型可以用于不同的图像处理任务,例如边缘检测、图像分割、目标识别等。
""" Author:XiaoMa date:2021/11/2 """ import cv2 import numpy as np import matplotlib.pyplot as plt img0 = cv2.imread("E:\putout\scene00001.png") img1 = cv2.resize(img0, dsize=None, fx=1, fy=1) img2 = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY) h, w = img1.shape[:2] print(h, w) cv2.namedWindow("W0") cv2.imshow("W0", img2) cv2.waitKey(delay=0) # 图像进行二值化 ##第一种阈值类型 ret0, img3 = cv2.threshold(img2, 127, 255, cv2.THRESH_BINARY) print(ret0) ##第二种阈值类型 ret1, img4 = cv2.threshold(img2, 127, 255, cv2.THRESH_BINARY_INV) print(ret1) ##第三种阈值类型 ret2, img5 = cv2.threshold(img2, 127, 255, cv2.THRESH_TRUNC) print(ret2) ##第四种阈值类型 ret3, img6 = cv2.threshold(img2, 127, 255, cv2.THRESH_TOZERO) print(ret3) ##第五种阈值类型 ret4, img7 = cv2.threshold(img2, 127, 255, cv2.THRESH_TOZERO) print(ret4) # 将所有阈值类型得到的图像绘制到同一张图中 plt.rcParams['font.family'] = 'SimHei' # 将全局中文字体改为黑体 figure = [img3] title = ret0["原图", "第一种阈值类型", "第二种阈值类型", "第三种阈值类型", "第四种阈值类型", "第五种阈值类型"] for i in range(6): figure[i] = cv2.cvtColor(figure[i], cv2.COLOR_BGR2RGB) # 转化图像通道顺序,这一个步骤要记得 plt.subplot(3, 2, i + 1) plt.imshow(figure[i]) plt.title(title[i]) # 添加标题 plt.savefig("E:\putout") 这串代码哪里有问题
这段代码使用Python中的OpenCV库及其相关函数导入一张本地图片,进行了缩放、颜色空间转换等操作。其中,cv2.imread()函数读取位于本地路径"E:\putout\scene00001.png"的图片,cv2.resize()对图片进行了大小重置,而cv2.cvtColor()则将图片从BGR颜色空间转换为灰度颜色空间。最后,使用cv2.namedWindow()和cv2.imshow()将转换后的图片显示出来。