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

根据R、G、B的值实时修改图像的颜色

import cv2
import numpy as np

"""
滑动块调整图像灰度

1. 读取图片,并转为灰度图
2. 定义启动滑块和R、G、B滑块
3. 只有启动滑块的值为1时,拖动R、G、B滑块才生效
4. 根据R、G、B的值实时对修改图片的颜色操作
"""

enable = False
img = np.zeros((400, 400, 3), dtype='uint8')
# img = cv2.imread('img.png')
print(img)
def nothing(x):  # 滑动条修改后会触发这个事件,我们这个程序不需要所以置空
    pass


def enableButton(x):  # 启动滑块触发事件
    global enable
    enable = bool(x)


cv2.namedWindow("image")

# 创建调色板滑动条
cv2.createTrackbar('Enable', 'image', 0, 1, enableButton)  # 创建是否启用滑块,返回为0-1之间
cv2.createTrackbar('R', 'image', 0, 255, nothing)  # 创建R滑块,范围在0-255之间
cv2.createTrackbar('G', 'image', 0, 255, nothing)  # 创建G滑块,范围在0-255之间
cv2.createTrackbar('B', 'image', 0, 255, nothing)  # 创建B滑块,范围在0-255之间

while 1:
    cv2.imshow("image", img)
    k = cv2.waitKey(1)
    if k == ord('q'):  # 如果输入q则退出程序
        break
    if enable:  # 如果当前滑块状态是启动的话,则对图像进行二值化操作
        # 获取当前滑块的值
        r = cv2.getTrackbarPos("R", "image")
        g = cv2.getTrackbarPos("G", "image")
        b = cv2.getTrackbarPos("B", "image")
        # 将当前的图片所有像素替换为对应的r、g、b值组成的颜色
        img[:] = (b, g, r)

这段代码创建了一个窗口,其中包含一个启用/禁用滑块和分别用于调整红色(R)、绿色(G)和蓝色(B)通道的滑块。用户可以通过拖动滑块来实时调整图像的颜色。按下 'q' 键退出程序。

以下是代码的主要步骤:

  1. 初始化全局变量:enable 用于标记是否启用颜色调整。

  2. 创建一个黑色图像:img = np.zeros((400, 400, 3), dtype='uint8')

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

  4. 创建窗口和滑块:使用 cv2.namedWindow 创建窗口,使用 cv2.createTrackbar 创建启用滑块和三个颜色通道滑块。

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

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

  7. 如果启用了颜色调整,获取当前滑块的值,然后将图像的所有像素替换为对应的 R、G、B 值组成的颜色。

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

注意:img = np.zeros((400, 400, 3), dtype='uint8') 的dtype选项必须为unit8,不然会cv.show因为类型报错。

相关推荐
北京搜维尔科技有限公司35 分钟前
搜维尔科技:【应用】Xsens在荷兰车辆管理局人体工程学评估中的应用
人工智能·安全
说私域39 分钟前
基于开源 AI 智能名片 S2B2C 商城小程序的视频号交易小程序优化研究
人工智能·小程序·零售
YRr YRr39 分钟前
深度学习:Transformer Decoder详解
人工智能·深度学习·transformer
知来者逆44 分钟前
研究大语言模型在心理保健智能顾问的有效性和挑战
人工智能·神经网络·机器学习·语言模型·自然语言处理
云起无垠1 小时前
技术分享 | 大语言模型赋能软件测试:开启智能软件安全新时代
人工智能·安全·语言模型
老艾的AI世界1 小时前
新一代AI换脸更自然,DeepLiveCam下载介绍(可直播)
图像处理·人工智能·深度学习·神经网络·目标检测·机器学习·ai换脸·视频换脸·直播换脸·图片换脸
翔云API2 小时前
PHP静默活体识别API接口应用场景与集成方案
人工智能
浊酒南街2 小时前
吴恩达深度学习笔记:卷积神经网络(Foundations of Convolutional Neural Networks)4.9-4.10
人工智能·深度学习·神经网络·cnn
Tony聊跨境2 小时前
独立站SEO类型及优化:来检查这些方面你有没有落下
网络·人工智能·tcp/ip·ip
懒惰才能让科技进步2 小时前
从零学习大模型(十二)-----基于梯度的重要性剪枝(Gradient-based Pruning)
人工智能·深度学习·学习·算法·chatgpt·transformer·剪枝