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):  # 滑动条修改后会触发这个事件,我们这个程序不需要所以置空passdef enableButton(x):  # 启动滑块触发事件global enableenable = 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则退出程序breakif 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因为类型报错。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/315715.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

BIOS:计算机中的特洛伊木马

内容概述: 由于主板制造商在计算机启动时用来显示品牌徽标的图像分析组件相关的问题,多个安全漏洞(统称为 LogoFAIL)允许攻击者干扰计算机设备的启动过程并安装 bootkit。x86 和 ARM 设备都面临风险。主板固件供应链安全公司 Bin…

浅析PCIe 6.0功能更新与实现的挑战-4

低功耗L0p 引入L0p的主要目的是为了进一步优化PCIe链路的电源管理,降低能耗,并在不中断数据传输的情况下实现动态带宽调整。随着PCIe标准演进到6.0版本,对更高带宽、更低延迟和更高效能的需求日益增长,特别是在数据中心和其他高功…

机器学习逻辑回归

Logistic 回归是一种常用的处理二分类问题的线性模型。采用𝑦 ∈ {0, 1}以符合Logistic回归的描述习惯。 为了解决连续的线性函数不适合进行分类的问题,引入非线性函数𝑔:ℝ𝐷 → (0, 1)来预测类别标签的后验概率&…

实战入门 K8s剩下三个模块

1.Label Label是kubernetes系统中的一个重要概念。它的作用就是在资源上添加标识,用来对它们进行区分和选择。 Label的特点: 一个Label会以key/value键值对的形式附加到各种对象上,如Node、Pod、Service等等 一个资源对象可以定义任意数量…

提升软件质量与效率:UI自动化测试的重要性

在软件开发领域,UI自动化测试工具被广泛应用,其意义不仅仅体现在节省时间和资源上,更关系到软件质量的提升、团队效率的增加,以及用户体验的改善。本文将探讨使用UI自动化测试工具的重要性,以及它在软件开发生命周期中…

Python如何把类当做字典来访问及浅谈Python类命名空间

Python如何把类当做字典来访问 Python把类当做字典来访问 定义一个类将它实例化,我们可以通过obj.属性来访问类的属性,如果想获取类的所有实例变量,我们可以使用obj.__dict__来访问,如下: class A:def __init__(self)…

matplotlib绘制折线图

代码 import matplotlib.pyplot as plt import numpy as npdef get_data(txt_path: str , epoch: int 100, target: str , target_data_len: int 5): # 函数介绍 # https://blog.csdn.net/LQ_001/article/details/130127681?csdn_share_tail%7B%22type%22%3A%22blog%22%2…

我有实体店,为什么要做小程序

做小程序对于实体店来说有以下几个好处: 拓展线上渠道:随着移动互联网的普及,越来越多的消费者习惯在手机上进行购物和搜索相关信息。通过做小程序,你可以将线下实体店与线上渠道相结合,提供在线购买、预约、查询等功能…

【数学建模美赛M奖速成系列】Matplotlib绘图技巧(二)

Matplotlib绘图技巧(二) 写在前面2. 函数间区域填充函数fill_between()和fill()参数: 3. 散点图 scatter4. 直方图 hist5. 条形图 bar5.1 一个数据样本的条形图参数: 5.2 多个数据样本进行对比的直方图5.3 水平条形图参数 5.4 绘制…

常见HTTP 500错误发生原因及解决办法剖析

​  对于网站运营者来说,提到500内部服务器错误并不陌生。互联网行业对它的称呼有好几种,如“500内部服务器错误”、“HTTP 500 - 内部服务器错误”、“临时错误 (500)”、“内部服务器错误”。尽管叫法不同,但根本问题是相同的。 目前&…

二维码地址门牌系统技术服务:让您的生活更便捷,一码通行,安全无忧

文章目录 前言一、融合二维码技术与门牌的便捷服务二、手机开门便捷功能三、智能化安全保障四、智能化、便捷化的新型技术 前言 在数字化时代,二维码门牌系统技术应运而生,为了满足人们对安全、便捷生活的需求。这项技术将二维码与门牌结合,…

虚幻UE 材质-进阶边界混合之WAT世界对齐纹理

边界混合前篇:虚幻UE 材质-边界混合之PDO像素深度偏移量 上一篇主要讲材质相似或者不同的两个物体之间的边界混合 这一篇主要讲自建材质且相同的两个物体之间的边界混合 文章目录 一、世界对齐纹理二、世界对齐纹理实验1、制作材质 三、进一步优化 一、世界对齐纹理…