opencv阈值操作

ret, dst = cv2.threshold(src, thresh, maxval, type)

·src: 输入图,只能输入单通道图像,通常来说为灰度图

·dst: 输出图

·thresh: 阈值

·maxval: 当像素值超过了阈值(或者小于阈值,根据type来决定),所赋予的值

·type: 二值化操作的类型,包含以下5种类型:cv2.THRESH_BINARY; cv2.THRESH_BINARY_INV; cv2.THRESH_TRUNC; cv2.THRESH_TOZERO; cv2.THRESH_TOZERO_INV

·cv2.THRESH_BINARY 超过阈值部分取maxval(最大值),否则取0

·cv2.THRESH_BINARY_INV THRESH_BINARY的反转

·cv2.THRESH_TRUNC 大于阈值部分设为阈值,否则不变

·cv2.THRESH_TOZERO 大于阈值部分不改变,否则设为0

·cv2.THRESH_TOZERO_INV THRESH_TOZERO的反转

python 复制代码
# 导入OpenCV库,用于图像处理  
import cv2  
# 从matplotlib库中导入pyplot模块,用于绘制图像  
from matplotlib import pyplot as plt  
  
# 创建一个名为'window'的窗口,窗口大小自动调整  
cv2.namedWindow('window', cv2.WINDOW_AUTOSIZE)  # cv2.WINDOW_AUTOSIZE: 窗口大小自动调整,不允许用户改变窗口大小  
  
# 使用OpenCV的imread函数读取名为"mao.jpg"的图片,参数1表示读取彩色图像  
cat = cv2.imread("mao.jpg", 1)  # cat变量存储读取的图像数据,OpenCV默认以BGR格式读取  
  
# 在名为'window'的窗口中显示图像  
cv2.imshow('window', cat)  
  
# 对图像进行二值化处理,使用不同的阈值类型  
ret, thresh1 = cv2.threshold(cat, 127, 255, cv2.THRESH_BINARY)  # 二进制阈值  
ret, thresh2 = cv2.threshold(cat, 127, 255, cv2.THRESH_BINARY_INV)  # 反二进制阈值  
ret, thresh3 = cv2.threshold(cat, 127, 255, cv2.THRESH_TRUNC)  # 截断阈值  
ret, thresh4 = cv2.threshold(cat, 127, 255, cv2.THRESH_TOZERO)  # 阈值化为0  
ret, thresh5 = cv2.threshold(cat, 127, 255, cv2.THRESH_TOZERO_INV)  # 反阈值化为0  
  
# 定义图像标题列表  
titles = ['Original Image', 'Binary Image', 'THRESH_BINARY_INV', 'THRESH_TRUNC', 'THRESH_TOZERO', 'THRESH_TOZERO_INV']  
  
# 定义图像列表  
images = [cat, thresh1, thresh2, thresh3, thresh4, thresh5]  
  
# 使用matplotlib绘制所有图像及其标题  
for i in range(6):  
    # 创建子图,2行3列,当前位置为i+1  
    plt.subplot(2, 3, i+1)  
    # 显示图像,使用灰度颜色映射  
    plt.imshow(images[i], 'gray')  
    # 设置子图标题  
    plt.title(titles[i])  
    # 隐藏x轴和y轴的刻度  
    plt.xticks([]), plt.yticks([])  
  
# 显示所有子图  
plt.show()  
  
# 等待按键事件,0表示无限期等待  
key = cv2.waitKey(0)  
  
# 检查按下的键是否是'q',如果是则销毁所有窗口  
if key & 0xFF == ord('q'):  # 0xFF是掩码,用于确保只检查最低8位  
    print("准备销毁窗口")  
    cv2.destroyAllWindows()

效果展示

相关推荐
豆豆4 分钟前
机器学习 day02
人工智能·机器学习
白熊1888 分钟前
计算机视觉】OpenCV项目实战:eye_mouse_movement:基于opencv实战眼睛控制鼠标
opencv·计算机视觉·计算机外设
背太阳的牧羊人9 分钟前
[CLS] 向量是 BERT 类模型中一个特别重要的输出向量,它代表整个句子或文本的全局语义信息
人工智能·深度学习·bert
ayiya_Oese39 分钟前
[数据处理] 6. 数据可视化
人工智能·pytorch·python·深度学习·机器学习·信息可视化
大腾智能39 分钟前
五一旅游潮涌:数字化如何驱动智慧旅游升级
大数据·人工智能·数字化·旅游数字化
没有梦想的咸鱼185-1037-16631 小时前
【大语言模型ChatGPT4/4o 】“AI大模型+”多技术融合:赋能自然科学暨ChatGPT在地学、GIS、气象、农业、生态与环境领域中的应用
人工智能·python·机器学习·arcgis·语言模型·chatgpt·数据分析
老艾的AI世界1 小时前
AI制作祝福视频,直播礼物收不停,广州塔、动态彩灯、LED表白(附下载链接)
图像处理·人工智能·深度学习·神经网络·目标检测·机器学习·ai·ai视频·ai视频生成·ai视频制作
IT古董1 小时前
【漫话机器学习系列】250.异或函数(XOR Function)
人工智能·机器学习
Blossom.1181 小时前
虚拟现实(VR)与增强现实(AR)在教育领域的应用:开启沉浸式学习新时代
人工智能·深度学习·学习·机器学习·ar·制造·vr
搬砖的小码农_Sky1 小时前
人形机器人:主控芯片
人工智能·机器人·硬件架构·硬件工程·gpu算力