OpenCV入门04:调整图像对比度和亮度

教程开源

本教程开源,地址:https://gitee.com/zccbbg/opencv_study

图像的亮度和对比度说明

  1. 亮度: 亮度是指图像中像素的整体明亮程度。在数字图像中,每个像素都有一个灰度值,表示其亮度水平。亮度越高,像素就越明亮,亮度越低,像素就越暗。调整图像的亮度通常是通过改变每个像素的灰度值或应用亮度调整滤镜来实现的。

  2. 对比度: 对比度描述了图像中不同区域之间的亮度差异。对比度高表示图像中明暗区域之间有明显的差异,而对比度低则表示这些差异不太明显。提高对比度可以使图像更加清晰和鲜明。对比度的调整可以通过增加暗部和亮部之间的差异来实现,例如调整图像的曲线或应用对比度调整滤镜。

调整图像对比度

获取名为"contrast"的轨迹条的当前位置,并将其除以100,以得到用户调整的对比度值。
其中image是原始图像,blank是全黑图像,0.5是权重,light和contrast分别用于亮度和对比度的调整。

def nothing(x):print(x)def adjust_contrast_demo():image = cv.imread("../images/test.jpg")'''创建一个窗口,并为它指定一个名称("input"),并使用cv.WINDOW_AUTOSIZE来指定窗口的大小自适应图像的大小。'''cv.namedWindow("input",cv.WINDOW_AUTOSIZE)'''这个轨迹条允许用户调整图像的亮度。0是轨迹条的初始值,100是轨迹条的最大值,nothing是一个回调函数,用于响应轨迹条的变化'''cv.createTrackbar("lightness","input",0,100,nothing)cv.createTrackbar("contrast","input",100,200,nothing)cv.imshow("input", image)blank = np.zeros_like(image)while True:# 获取名为"lightness"的轨迹条的当前位置,即用户调整的亮度值。light = cv.getTrackbarPos("lightness","input")# 获取名为"contrast"的轨迹条的当前位置,并将其除以100,以得到用户调整的对比度值。contrast = cv.getTrackbarPos("contrast","input")/100print("light:",light,"contrast:",contrast)# 其中image是原始图像,blank是全黑图像,0.5是权重,light和contrast分别用于亮度和对比度的调整。result=cv.addWeighted(image,contrast,blank,0.5,light)cv.imshow("result",result)c=cv.waitKey(1) # 等待1毫秒,以便捕获用户的键盘输入。会返回相应的ASCII码值。如果用户按下Esc键(ASCII码为27),则退出循环。if c==27:breakcv.destroyAllWindows()if __name__ == '__main__':adjust_contrast_demo()

图像的亮度和对比度跟随滚动条的变化而变化
在这里插入图片描述

调整图像亮度

使用cv.add函数将原始图像image和灰色图像blank相加,生成一个新的图像result,其中每个像素是对应位置的两个图像像素之和。这将导致原始图像中的每个像素的颜色都加了一个灰色的亮度。
在这里插入图片描述

def nothing(x):print(x)def adjust_lightness_demo():image = cv.imread("../images/test.jpg")cv.namedWindow("input",cv.WINDOW_AUTOSIZE)cv.createTrackbar("lightness","input",0,100,nothing)cv.imshow("input", image)blank = np.zeros_like(image)while True:pos = cv.getTrackbarPos("lightness","input") # 获取名为"lightness"的轨迹条的当前位置,即用户调整的亮度值。blank[:,:] = (pos,pos,pos) # 将全黑图像blank的所有像素值设置为(pos, pos, pos),这意味着将所有像素的颜色设置为灰色,并且灰色的亮度由轨迹条的位置pos决定。'''使用cv.add函数将原始图像image和灰色图像blank相加,生成一个新的图像result,其中每个像素是对应位置的两个图像像素之和。这将导致原始图像中的每个像素的颜色都加了一个灰色的亮度。'''result=cv.add(image,blank)cv.imshow("result",result)c=cv.waitKey(1)if c==27: # 等待1毫秒,以便捕获用户的键盘输入。会返回相应的ASCII码值。如果用户按下Esc键(ASCII码为27),则退出循环。breakcv.destroyAllWindows()if __name__ == '__main__':adjust_lightness_demo()

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

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

相关文章

omics简介

omics简介 公众号pythonic生物人写的系列文章介绍了组学的相关内容,本文仅做了一个简单的知识框架,供后面遇到对应问题,快速查阅。欢迎大家去关注原作者。 这篇文章也非常值得阅读:肿瘤NGS行业新人如何构建自己的知识体系-思考问题…

YOLOV8

YOLOv8 是 ultralytics (超溶体)公司在 2023 年 1月 10 号开源的 YOLOv5 的下一个重大更新版本,目前支持图像分类、物体检测和实例分割任务,在还没有开源时就收到了用户的广泛关注。 总结: 1. 是YOLOV5的继承者 2. …

msvcr120.dll是什么?msvcr120.dll丢失要怎么去修复?

随着计算机技术的不断发展,我们在使用软件或游戏时经常会遇到各种错误提示,其中找不到msvcr120.dll就是一种常见的错误。那么,msvcr120.dll是什么?它的作用是什么?如何修复msvcr120.dll丢失的问题?本文将为…

1.4号io网络

1.多进程 引入目的:让多个任务实现并发执行 并发执行:同一时间只有一个进程执行,通过时间轮询调度多个进程,由于时间每个进程所用时间极短,所以宏观表现为多个进程同时进行。 并行执行:多个任务器执行多…

【福利】百度内容审核平台实战

文章目录 前言功能概述产品价格快速入门(账号登录及资源领取、在线验证、编写示例程序)实战演示1、首先创建一个应用2、引入百度的SDK3、测试用例百度内容审核-文本 200QPS百度内容审核-图像 50QPS 写在最后 前言 百度内容审核平台主要针对图像、文本、…

C语言可变参数输入

本博文源于笔者正在学习的可变参数输入&#xff0c;可变参数是c语言函数中的一部分&#xff0c;下面本文就以一个很小的demo演示可变参数的编写 问题来源 想要用可变参数进行多个整数相加 方法源码 #include<stdio.h> #include<stdlib.h> #include<stdarg.h…

接口测试基础(超详细)

一、HTTP 1、http请求头和响应头包含那些内容&#xff1f; 请求头信息 请求报头允许客户端向服务器端传递请求的附加信息以及客户端自身的信息。 2、常用的请求报头如下&#xff1a; Accept&#xff1a;浏览器可接受的MIME类型。 l MIME用于设定某种扩展名的文件用哪种应用程…

tiktok_浅谈hook ios之发包x-ss-stub

frida-trace ios手机一部&#xff0c;需要越狱的电脑一台idacrackerXI 目标app&#xff1a; ipa 包&#xff0c;点击前往 密码&#xff1a;8urs 协议分析起始从抓包开始&#xff0c;个人习惯 一般安卓逆向可以直接搜关键词&#xff0c;但是ios 都在 Mach-O binary (reverse…

基于ssm学生社团管理系统+vue论文

摘 要 如今的时代&#xff0c;是有史以来最好的时代&#xff0c;随着计算机的发展到现在的移动终端的发展&#xff0c;国内目前信息技术已经在世界上遥遥领先&#xff0c;让人们感觉到处于信息大爆炸的社会。信息时代的信息处理肯定不能用之前的手工处理这样的解决方法&#x…

DAPP和APP的区别在哪?

随着科技的飞速发展&#xff0c;我们每天都在与各种应用程序打交道。然而&#xff0c;你是否真正了解DAPP和APP之间的区别呢&#xff1f;本文将为你揭示这两者的核心差异&#xff0c;让你在自媒体平台上脱颖而出。 一、定义与起源 APP&#xff0c;即应用程序&#xff0c;通常指…

一文读懂JVS逻辑引擎如何调用规则引擎:含详细步骤与场景示例

在当今的数字化时代&#xff0c;业务逻辑和规则的复杂性不断增加&#xff0c;这使得逻辑引擎和规则引擎在处理业务需求时显得尤为重要。逻辑引擎和规则引擎通过定义、解析和管理业务逻辑和规则&#xff0c;能够帮助企业提高工作效率、降低运营成本&#xff0c;并增强决策的科学…

数据科学低代码工具思考2—现状分析

数据科学工具伴随着计算机技术的发展也在持续的演进。数据库、大数据以及人工智能等时代标志性技术的出现&#xff0c;对数据科学工具的能力也有了更高的要求。一般而言&#xff0c;工具发展的趋势都是首先会出现一个能够支持数据科学计算的开发框架&#xff0c;方便用户能够更…

RHCE9学习指南 第20章 计划任务

有时需要在某个指定的时间执行一个操作&#xff0c;此时就要使用计划任务了。计划任务有两种&#xff1a;一个是at计划任务&#xff0c;另一个是crontab计划任务。 下面我们分别来看这两种计划任务的使用。 20.1 at at计划任务是一次性的&#xff0c;到了指定的时间点时就开始…

mac图片格式转换软件有哪些?推荐6个实用软件

mac图片格式转换软件有哪些&#xff1f;在数字时代&#xff0c;图片格式的转换已成为我们日常工作中不可或缺的一部分。对于Mac用户来说&#xff0c;选择一款高效、便捷的图片格式转换软件尤为重要。本文将为你介绍几款备受推崇的Mac图片格式转换软件&#xff0c;让你轻松应对各…

MySQL 5.7.35下载安装使用_忘记密码_远程授权

文章目录 MySQL 5.7.35下载安装使用_忘记密码_远程授权MySQL下载地址mysql安装点击安装&#xff0c;最好以管理员身份运行选择自定义安装选择64位勾选启动自定义产品执行点击同意点击下一步点击执行下一步配置数据库端口号设置登录密码&#xff0c;如果密码忘记&#xff0c;下面…

最新PyCharm安装详细教程及pycharm配置_pycharm安装教程

目录 一、PyCharm简介及其下载网站 二、单击网站的Downloads&#xff0c;进入二级页面&#xff0c;选择对应的操作系统下载PyCharm 三、PyCharm的安装程序的安装及其配置(configuration) 1、运行PyCharm Setup 2、安装位置设置 3、安装选项设置 4、开始菜单中PyCharm快捷方式的…

CMake入门教程【高级篇】管理MSVC编译器警告

😈「CSDN主页」:传送门 😈「Bilibil首页」:传送门 😈「动动你的小手」:点赞👍收藏⭐️评论📝 文章目录 1.什么是MSVC?2.常用的屏蔽警告3.MSVC所有警告4.target_compile_options用法5.如何在CMake中消除MSVC的警告?6.屏蔽警告编写技巧

如何使用css隐藏掉滚动条

1.解决方案 在滚动元素上再包裹一个父元素&#xff0c;然后&#xff0c;该元素添加如下代码&#xff1a; &#xff08;注&#xff1a;PC端浏览器滚动条为8px&#xff09;使元素偏移原来位置8px&#xff0c;目的就是将滚动条区域移动到父元素边框外面&#xff0c;然后&#xff…

PFA试剂瓶——实验室存储运输化学试剂样品容器

PFA是一种高性能的塑料材料。它是一种热塑性塑料&#xff0c;由全氟化&#xff0c;聚合物制成&#xff0c;具有高度的化学稳定性性。由于其优异的性能&#xff0c;PFA被广泛应用于多个领域&#xff0c;尤其是作为存储和运输各种化学试剂的容器&#xff0c;耐受-200℃至260C的温…

云流量回溯的工作原理及关键功能

云计算和网络技术的快速发展为企业提供了更灵活、高效的业务运营环境&#xff0c;同时也引发了一系列网络安全挑战。在这个背景下&#xff0c;云流量回溯成为网络安全领域的一个关键技术&#xff0c;为企业提供了对网络活动的深入洞察和实时响应的能力。 一、 云流量回溯的基本…