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因为类型报错。

相关推荐
临渊羡鱼的猫1 分钟前
基础优化方法
人工智能·深度学习·机器学习
吃个糖糖5 分钟前
33 Opencv ShiTomasi角点检测
人工智能·opencv·计算机视觉
爱研究的小牛23 分钟前
Pika Labs技术浅析(四):数据可视化
神经网络·计算机视觉·信息可视化·aigc
AI明说26 分钟前
DDI-GPT:使用知识图谱增强的大模型对药物相互作用进行可解释的预测
人工智能·gpt·大模型·知识图谱·数智药师·数智药学
视觉&物联智能1 小时前
【杂谈】-AI搜索引擎如何改变传统SEO及其在内容营销中的作用
人工智能·搜索引擎·ai·aigc·seo
九河云1 小时前
Amazon Bedrock Claude 3 在客户服务自动化中的应用方法
运维·人工智能·自动化·aws
文心快码 Baidu Comate1 小时前
打破视障壁垒,百度文心快码无障碍版本助力视障IT从业者就业无“碍”
人工智能·ai编程·文心快码·智能编程助手·智能代码助手
诚威_lol_中大努力中1 小时前
关于pytorch3d的安装
人工智能·pytorch·python
herogus丶2 小时前
【Spring AI】Spring AI Alibaba的简单使用
java·人工智能·spring·ai
dundunmm2 小时前
机器学习之pandas
人工智能·python·机器学习·数据挖掘·pandas