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

滑动块调整图像灰度


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  # 表明引用的事全局变量enableenable = 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则退出程序breakif 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 创建一个图像窗口,并通过滑块实时调整图像的二值化阈值。

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

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

相关文章

分布式事务理论及Seata实践

分布式事务简介 事务是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。事务的四个特征(ACID) …

element-ui table height 属性导致界面卡死

问题: 项目上,有个点击按钮弹出抽屉的交互, 此时界面卡死 原因分析: 一些场景下(父组件使用动态单位/弹窗、抽屉中使用), element-ui 的 table 会循环计算高度值, 导致界面卡死 github 上的一些 issues 和解决方案: Issues ElemeFE/element GitHub 官方讲是升…

Rockchip平台双屏异显功能实现(基于Android13)

Rockchip平台双屏异显功能实现(基于Android13) 1. 异显实现方案 Rockchip SDK平台支持两种不同的异显方案:Android Presentation和Android Activity指定屏幕启动。 使用Android Presentation方案,需要在APP开发中调用相应接口以使指定视图&#xff08…

SRv6简介

文章目录 SR,分段路由IPv6 SRv6,简单来理解,其实就是 SRIPv6。 SRv6(Segment Routing v6,基于IPv6转发平面的段路由)是基于源路由理念而设计的在网络上转发数据包的一种协议。其核心思想是将报文转发路径切割成不同的段&#xff…

Fowsniff

靶场搭建 遇到扫描不到的情况,可以尝试改靶机的网络为NAT模式,在靶机启动时按”esc“,进入Advanced options for Ubantu,选择recovery mode,选择network,按方向键”→“,OK,然后res…

1/7文章

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 摘要Abstract文献阅读:具有运动模糊的大规模场景的混合神经绘制1、研究背景2、方法提出3、相关方法3.1、混合神经渲染模型(Hybrid Neural Re…

第2章 JavaScript基本语法

学习目标 了解什么是变量,能够说出变量的概念 掌握变量的命名规则,能够为变量命名 掌握变量的声明与赋值,能够声明变量并为其赋值 熟悉数据类型的分类,能够说出JavaScript中有哪些数据类型 掌握常用的基本数据类型&#xff0c…

新晋程序员的2023:挫折、收获与未来展望

2023年,对我而言,是一个崭新的开端,也是一个丰富的挑战。毕业后,我跌跌撞撞走入了编程世界,虽然这年经历了很多坎坷,但也收获了许多。让我向你们介绍一下我刚毕业的这一年的编程之旅。 我与编程的故事开始…

鸿蒙南向开发—PWM背光(OpenHarmony技术)

背光驱动模型也是基于HDF框架开发的,整个框架如下: 现在以RK3568为例,来看看PWM背光整个驱动,这里使用的是PWM占空比控制的背光,默认基于hdf的pwm驱动已经OK! 需要注意的是:这里是基于HDF实现的…

适合前后端开发的可视化编辑器(拖拽控件)

分享一个面向研发人群使用的前后端分离的低代码软件——JNPF。 JNPF与市面上其他的低代码(轻流、宜搭、微搭、简道云、轻流、活字格等等),后者更倾向于非编程人员使用,让业务线人员自行构建应用程序。而 JNPF 这款低代码产品是面向…

pyfolio工具结合backtrader分析量化策略组合,附源码+问题分析

pyfolio可以分析backtrader的策略,并生成一系列好看的图表,但是由于pyfolio直接install的稳定版有缺陷,开发版也存在诸多问题,使用的依赖版本都偏低,试用了一下之后还是更推荐quantstats。 1、安装依赖 pip install …

C++学习笔记——友元及重载运算符

目录 一、友元 1.1声明友元函数 1.2声明友元类 二、运算符重载 2.1重载加号运算符 2.2重载流插入运算符 三、一个简单的银行管理系统 四、 详细的介绍 一、友元 在 C 中,友元是一个函数或类,它可以访问另一个类的私有成员或保护成员。通常情况下…