opencv期末练习题(6)附带解析

滑动块调整图像灰度

python 复制代码
import cv2
import numpy as np
"""
滑动块调整图像灰度

1. 读取图片,并转为灰度图
2. 定义启动滑块和阈值滑块
3. 只有启动滑块的值为1时,拖动阈值滑块才生效
4. 根据阈值滑块的值实时对图像进行二值化操作
"""

enable = False
img = cv2.imread("./img.png", 0)  # 读取灰度化后的图像,0代表读入灰度图。


def nothing(x):  # 滑动条修改后会触发这个事件,我们这个程序不需要所以置空
    pass  # pass代表啥也不干


def enableButton(x):  # 启动滑块触发事件
    global enable  # 表明引用的事全局变量enable
    enable = bool(x)  # 根据当前滑块的值设置当前的启动状态


cv2.namedWindow("image")

# 创建调色板滑动条
cv2.createTrackbar('Enable', 'image', 0, 1, enableButton)  # 创建是否启用滑块,返回为0-1之间
cv2.createTrackbar('thresh', 'image', 0, 255, nothing)  # 创建阈值滑块,范围在0-255之间
new_img = img.copy()  # 拷贝一个新图像
while 1:
    cv2.imshow("image", new_img)
    k = cv2.waitKey(1)
    if k == ord('q'):  # 如果输入q则退出程序
        break
    if enable:  # 如果当前滑块状态是启动的话,则对图像进行二值化操作
        thresh = cv2.getTrackbarPos("thresh", "image")  # 获取当前滑块的值
        _, new_img = cv2.threshold(img, thresh=thresh, maxval=255, type=cv2.THRESH_BINARY)  # 根据滑块的值进行二值化操作

这段代码创建了一个窗口,其中包含一个启用/禁用滑块和一个用于调整阈值的滑块。用户可以通过拖动滑块来实时调整图像的二值化阈值。按下 'q' 键退出程序。

以下是代码的主要步骤:

  1. 初始化全局变量:enable 用于标记是否启用二值化操作。

  2. 读取灰度图像:img = cv2.imread("./img.png", 0)

  3. 定义两个滑块触发函数:nothing(x) 为空函数,enableButton(x) 设置 enable 变量的值。

  4. 创建窗口和滑块:使用 cv2.namedWindow 创建窗口,使用 cv2.createTrackbar 创建启用滑块和阈值滑块。

  5. 拷贝一个新图像 new_img 作为显示用。

  6. 进入死循环,实时显示当前图像,并等待用户的键盘输入。

  7. 如果用户按下 'q' 键,则退出程序。

  8. 如果启用了二值化操作,获取当前阈值滑块的值,并根据该值对图像进行二值化操作。二值化结果存储在 new_img 中。

这个程序演示了如何使用 OpenCV 创建一个图像窗口,并通过滑块实时调整图像的二值化阈值。

相关推荐
攻城狮7号4 分钟前
OpenAI 的 Sora 2来了:一场创意革命与失控的狂欢
人工智能·大模型·openai·ai视频·sora 2
胖头鱼的鱼缸(尹海文)1 小时前
数据库管理-第376期 Oracle AI DB 23.26新特性一览(20251016)
数据库·人工智能·oracle
瑞禧生物ruixibio1 小时前
4-ARM-PEG-Pyrene(2)/Biotin(2),多功能化聚乙二醇修饰荧光标记生物分子的设计与应用探索
arm开发·人工智能
大千AI助手1 小时前
Huber损失函数:稳健回归的智慧之选
人工智能·数据挖掘·回归·损失函数·mse·mae·huber损失函数
墨利昂1 小时前
10.17RNN情感分析实验:加载预训练词向量模块整理
人工智能·rnn·深度学习
【建模先锋】1 小时前
一区直接写!CEEMDAN分解 + Informer-LSTM +XGBoost组合预测模型
人工智能·lstm·ceemdan·预测模型·风速预测·时间序列预测模型
fsnine1 小时前
YOLOv2原理介绍
人工智能·计算机视觉·目标跟踪
倔强的石头1062 小时前
AI修图革命:IOPaint+cpolar让废片拯救触手可及
人工智能·cpolar·iopaint
文火冰糖的硅基工坊2 小时前
[人工智能-大模型-15]:大模型典型产品对比 - 数字人
人工智能·大模型·大语言模型
JJJJ_iii2 小时前
【机器学习05】神经网络、模型表示、前向传播、TensorFlow实现
人工智能·pytorch·python·深度学习·神经网络·机器学习·tensorflow