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

news2024/11/20 6:19:26

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JDK17 - 开发者视角,从 JDK8 ~ JDK17 都增加了哪些新特性

目录 前言 一、站在开发视角,从 JDK8 升级到 JDK17 都有哪些新特性 1.1、JDK8 新特性 1.1.1、Optional 类 a)简介 b)使用方法 c)使用场景 1.2、JDK9 新特性 1.2.1、Optional - ifPresentOrElse 解决 if-else 1.2.2、Opt…

每天刷两道题——第三天

1.1两两交换链表中的节点 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换) 输入:[1,2,3,4] 输出:[2,1,4,3…

【ESP-NOW Web 服务器传感器仪表板 (ESP-NOW + Wi-Fi)】

【ESP-NOW Web 服务器传感器仪表板 (ESP-NOW Wi-Fi)】 1. 前言2. 同时使用 ESP-NOW 和 Wi-Fi3. 项目概况4. 先决条件4.1 环境配置4.2 DHT 库4.3 ESPAsyncWebSrv服务器库4.4 Arduino_JSON4.5 所需零件4.6 获取接收板 MAC 地址4.7 ESP32 发送电路 5. ESP3…

常见安全概念澄清,Java小白入门(八)

认证 认证 (Identification) 是验证当前用户的身份。 常见的认证技术: 身份证用户名和密码用户手机:手机短信、手机二维码扫描、手势密码用户的电子邮箱用户的生物学特征:指纹、语音、眼睛虹膜 授权 授权 (Authorization) 指赋予用户系统…

js常用事件演示

目录 JS事件的具体方法 窗口事件 表单事件 键盘事件 鼠标事件 知识小拓展 JS事件的具体方法 我们用到JavaScript的时候js的事件就显得特别重要了 事件名说明onsubmit当表单提交时触发该事件onclick鼠标单击事件ondblclick鼠标双击事件onblur元素失去焦点onfocus元素获得…

了解深度学习优化器:Momentum、AdaGrad、RMSProp 和 Adam

slavahead 一、介绍 DEEP学习在人工智能领域迈出了一大步。目前,神经网络在非表格数据(图像、视频、音频等)上的表现优于其他类型的算法。深度学习模型通常具有很强的复杂性,并提出数百万甚至数十亿个可训练的参数。这就是为什么在…

玩转贝启科技BQ3588C开源鸿蒙系统开发板 —— 编译构建及此过程中的踩坑填坑(1)

接前一篇文章:玩转贝启科技BQ3588C开源鸿蒙系统开发板 —— 代码下载(2) 本文主要参考: BQ3588C_代码下载 上一回完成了代码下载,本回开始进行编译构建。 1. 编译构建 (1)执行prebuilts 在源…

SpringBoot 集成支付宝支付

网页操作步骤 1.进入支付宝开发平台—沙箱环境 使用开发者账号登录开放平台控制平台 2.点击沙箱进入沙箱环境 说明:沙箱环境支持的产品,可以在沙箱控制台 沙箱应用 > 产品列表 中查看。 3.进入沙箱,配置接口加签方式 在沙箱进行调试前…

扫地机器人地图与用户终端的同步

以下内容为本人的学习笔记,如需要转载,请声明原文链接 微信公众号「ENG八戒」https://mp.weixin.qq.com/s/APaJheSbgTW3jNssWsp5Ng 地图数据来源于机器人算法模块,一般通过SLAM算法完成建图的过程。 建图过程中,基础数据涉及到各…

Android 串口协议

前言 本协议是 Android 应用端与主控板之间的通信协议,是串行通信协议。 协议要求同一时间只能有两个通讯端点在相互通讯,采用小端传输数据。 硬件层基于RS485协议,采取半双工,一主多从的通讯模式。Android定义为主机&#xff0c…

一、初识Redis与分布式系统

目录 一、Redis应用 二、实现方式 三、Redis应用 四、分布式系统 五、分布式系统实现 1、应用服务和数据库服务分离 2、引入负载均衡,应用服务器集群(解决高并发) 3、引入读写分离,数据库主从结构(解决高并发&a…

如何在iPhone设备中查看崩溃日志

​ 目录 如何在iPhone设备中查看崩溃日志 摘要 引言 导致iPhone设备崩溃的主要原因是什么? 使用克魔助手查看iPhone设备中的崩溃日志 奔溃日志分析 总结 摘要 本文介绍了如何在iPhone设备中查看崩溃日志,以便调查崩溃的原因。我们将展示三种不同的…

流媒体学习之路(WebRTC)——GCC分析(4)

流媒体学习之路(WebRTC)——GCC分析(4) —— 我正在的github给大家开发一个用于做实验的项目 —— github.com/qw225967/Bifrost目标:可以让大家熟悉各类Qos能力、带宽估计能力,提供每个环节关键参数调节接口并实现一个json全配置…

【Java并发】深入浅出 synchronized关键词原理-上

一个问题的思考 建设我们有两个线程,一个进行5000次的相加操作,另一个进行5000次的减操作。那么最终结果是多少 package com.jia.syn;import java.util.concurrent.TimeUnit;/*** author qxlx* date 2024/1/2 10:08 PM*/ public class SynTest {privat…

使用Vue3开发学生管理系统模板1

环境搭建 通过解压之前《Vue3开发后台管理系统模板》的代码&#xff0c;我们能够得到用户增删改查的页面&#xff0c;我们基于用户增删改查的页面做进一步的优化。 创建学生增删改查页面 第一步&#xff1a;复制用户增删改查页面&#xff0c;重命名为StudentCRUD.vue <…

新闻稿发布:媒体重要还是价格重要

在当今信息爆炸的数字时代&#xff0c;企业推广与品牌塑造不可或缺的一环就是新闻稿发布。新闻稿是一种通过媒体渠道传递企业信息、宣传品牌、事件或产品新闻的文本形式。发布新闻稿的过程旨在将企业的声音传递给更广泛的受众&#xff0c;借助媒体平台实现品牌故事的广泛传播。…

exec、execFile、fork、spawn的区别与使用场景

在Node.js中&#xff0c;通过子进程可以实现并行执行任务&#xff0c;处理复杂的操作&#xff0c;以及与外部命令或文件进行交互。Node.js提供了多种子进程创建方法&#xff0c;包括exec、execFile、fork和spawn。本文将对这些方法进行比较&#xff0c;并介绍它们的适用场景和示…

【深度学习-基础学习】Transformer 笔记

本篇文章学习总结 李宏毅 2021 Spring 课程中关于 Transformer 相关的内容。课程链接以及PPT&#xff1a;李宏毅Spring2021ML这篇Blog需要Self-Attention为前置知识。 Transfomer 简介 Transfomer 架构主要是用来解决 Seq2Seq 问题的&#xff0c;也就是 Sequence to Sequence…

大数据StarRocks(一) StarRocks概述

1 StarRocks介绍 StarRocks是新一代极速全场景MPP(Massively Parallel Processing)数据库&#xff0c;它充分吸收关系型OLAP数据库和分布式存储系统在大数据时代的优秀研究成果&#xff0c;在业界实践的基础上&#xff0c;进一步改进优化、升级架构&#xff0c;并增添了众多全…

NSSCTF 1zjs

开启环境: 搞就完事了,别玩魔法! 源码打开 点击访问:./dist/index.umd.js" 搜索php,找到23条相关的,注意到有一个特别的信息: PERFORMANCE OF THIS SOFTWARE.Your gift just take it : /fk3f1ag.php 访问: node4.anna.nssctf.cn:28325/fk3f1ag.php 得到这样: ([![]…