当前位置: 首页 > news >正文

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之九 简单闪烁效果

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之九 简单闪烁效果

目录

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之九 简单闪烁效果

一、简单介绍

二、简单闪烁效果实现原理

三、简单闪烁效果案例实现简单步骤

四、注意事项


一、简单介绍

Python是一种跨平台的计算机程序设计语言。是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。Python是一种解释型脚本语言,可以应用于以下领域: Web 和 Internet开发、科学计算和统计、人工智能、教育、桌面界面开发、软件开发、后端开发、网络爬虫。

这里使用 Python  基于 OpenCV 进行视觉图像处理,......

二、简单闪烁效果实现原理

闪烁效果是指物体或光源快速、周期性地改变亮度或颜色的视觉效果。

在图像处理中,闪烁效果通常通过改变图像的亮度或对比度来实现,使图像在观察者眼中产生明暗变化的感觉。

这种效果常用于增强视觉吸引力或制造特殊效果,比如模拟闪烁的灯光、霓虹灯等。

在实际应用中,闪烁效果的频率、幅度和持续时间可以根据需要进行调整,以达到理想的视觉效果。

实现原理:

1、设定闪烁周期: 确定闪烁的周期,即图像亮度和对比度调整的时间间隔。在本例中,设定为1秒。

time.time() 返回当前时间的时间戳,用于计算时间间隔。

2、进入处理循环: 在一个无限循环中,持续处理图像以实现闪烁效果。

3、计算时间差: 在每次循环迭代中,计算当前时间与开始闪烁的时间之间的时间差。

4、调整亮度和对比度: 如果时间差大于闪烁周期,则进行图像亮度和对比度的调整。调整值通常在一定范围内随机生成,以获得随机的闪烁效果。

np.random.uniform() 用于生成指定范围内的随机数,用于调整亮度和对比度。

5、应用调整后的效果: 使用 cv2.convertScaleAbs() 函数将调整后的亮度和对比度应用于原始图像,生成调整后的图像。

cv2.convertScaleAbs() 将输入数组进行比例缩放并转换为无符号8位整数类型,用于调整图像的亮度和对比度。

6、反转亮度: 如果时间差大于闪烁周期,则将调整后的图像的亮度反转,以模拟闪烁效果。

三、简单闪烁效果案例实现简单步骤

1、编写代码

2、运行效果

3、具体代码

"""
简单的闪烁效果1、读取图像文件: 首先,从文件系统中读取输入的图像文件,该图像将作为闪烁效果的基础。2、设定闪烁周期: 确定闪烁的周期,即图像亮度和对比度调整的时间间隔。在本例中,设定为1秒。3、进入处理循环: 在一个无限循环中,持续处理图像以实现闪烁效果。4、计算时间差: 在每次循环迭代中,计算当前时间与开始闪烁的时间之间的时间差。5、调整亮度和对比度: 如果时间差大于闪烁周期,则进行图像亮度和对比度的调整。调整值通常在一定范围内随机生成,以获得随机的闪烁效果。6、应用调整后的效果: 使用 cv2.convertScaleAbs() 函数将调整后的亮度和对比度应用于原始图像,生成调整后的图像。7、反转亮度: 如果时间差大于闪烁周期,则将调整后的图像的亮度反转,以模拟闪烁效果。8、显示处理后的图像: 使用 cv2.imshow() 函数在窗口中显示处理后的图像。9、等待用户退出: 检测用户是否按下 'q' 键,如果是则退出循环。10、释放资源: 循环结束后,释放窗口资源并结束程序。
"""import cv2
import numpy as np
import timedef BlinkingEffect(image, blink_interval=1):"""简单闪烁效果:param image::param blink_interval: 闪烁间隔时间:return:"""# 检查图像是否成功读取if image is None:print("Error: Unable to read image.")exit()# 定义闪烁周期(秒)blink_interval = blink_interval# 定义开始闪烁的时间start_blink_time = time.time()# 循环处理图像while True:# 计算当前时间和开始闪烁的时间之间的时间差current_time = time.time()time_diff = current_time - start_blink_time# 计算亮度和对比度的调整值brightness = np.random.uniform(-50, 50)contrast = np.random.uniform(0.5, 1.5)# 使用亮度和对比度调整值调整图像adjusted_image = cv2.convertScaleAbs(image, alpha=contrast, beta=brightness)# 如果时间差大于闪烁周期,则进行图像闪烁处理if time_diff > blink_interval:# 反转图像亮度adjusted_image = 255 - adjusted_image# 更新开始闪烁的时间start_blink_time = current_time# 设置窗口属性,并显示图片cv2.namedWindow("Dog", cv2.WINDOW_KEEPRATIO)cv2.imshow('Neon Light', adjusted_image)# 按下 q 键,退出if cv2.waitKey(25) & 0xFF == ord('q'):break# 释放窗口cv2.destroyAllWindows()def main():# 读取图像文件image = cv2.imread('Images/DogFace.jpg')# 设置窗口属性,并显示图片cv2.namedWindow("Dog", cv2.WINDOW_KEEPRATIO)cv2.imshow("Dog", image)# 调用闪烁效果BlinkingEffect(image, 1)if __name__ == "__main__":main()

四、注意事项

  • 使用 cv2.imread() 读取图像时,确保图像文件路径正确,并且图像文件存在。
  • 在调整图像亮度和对比度时,可以使用 cv2.convertScaleAbs() 函数来实现。亮度和对比度的调整值可以根据需要进行调整,以获得理想的闪烁效果。
  • 确保在循环中正确计算时间差,并根据闪烁周期来控制图像的闪烁频率。
  • 在调试代码时,可以适当调整闪烁周期和调整值,以获得更好的效果。

相关文章:

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之九 简单闪烁效果

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之九 简单闪烁效果 目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之九 简单闪烁效果 一、简单介绍 二、简单闪烁效果实现原理 三、简单闪烁效果案例实现简单步骤 四、注意事项 一、简单…...

11 开源鸿蒙OpenHarmony轻量系统源码分析

开源鸿蒙轻量系统源码分析 作者将狼才鲸日期2024-03-28 一、前言 之前单独的LiteOS是通过Makefile编译的,当前的开源鸿蒙LiteOS-M和LiteOS-A是通过gn和ninja编译的。 Gitee官方只介绍了LiteOS-M的gn ninja编译的流程,针对M3使用Keil编译的流程可能要参…...

专题:一个自制代码生成器(嵌入式脚本语言)之应用实例

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 专题:一个自制代码…...

Appium设备交互API

设备交互API指的是操作设备系统中的一些固有功能,而非被测程序的功能,例如模拟来电,模拟发送短信,设置网络,切换横竖屏,APP操作,打开通知栏,录屏等。 模拟来电 make_gsm_call(phon…...

Qlib-Server部署

Qlib-Server部署 介绍 构建Qlib服务器,用户可以选择: 一键部署Qlib服务器逐步部署Qlib服务器一键部署 Qlib服务器支持一键部署,用户可以选择以下两种方法之一进行一键部署: 使用docker-compose部署在Azure中部署使用docker-compose进行一键部署 按照以下步骤使用docker…...

CMC学习系列 (4):β段CMC可以作为一种中风治疗的生物标志物和治疗靶点

CMC学习系列:β段CMC可以作为一种中风治疗的生物标志物和治疗靶点 0. 引言1. 主要贡献2. 方法2.1 相干源动态成像2.2 源统计分析 3. 结果3.1 训练前后比较3.2 源代码分析3.3 皮质重叠的分组分析 4. 讨论5. 总结欢迎来稿 论文地址:https://www.sciencedirect.com/sci…...

jmeter中参数加密

加密接口常用的方式有: MD5,SHA,HmacSHA RSA AES,DES,Base64 压测中有些参数需要进行加密,加密方式已接口文档为主。 MD5加密 比如MD5加密的接口文档: 请求URL:http://101.34.221…...

YOLOv8改进 | 检测头篇 | 2024最新HyCTAS模型提出SAttention(自研轻量化检测头 -> 适用分割、Pose、目标检测)

一、本文介绍 本文给大家带来的改进机制是由全新SOTA分割模型(Real-Time Image Segmentation via Hybrid Convolutional-TransformerArchitecture Search)HyCTAS提出的一种SelfAttention注意力机制,论文中叫该机制应用于检测头当中(论文中的分割效果展现目前是最好的)。我…...

verilog设计-cdc:多比特信号跨时钟域(DMUX)

一、前言 多比特一般为数据,其在跨时钟域传输的过程中有多种处理方式,比如DMUX,异步FIFO,双口RAM,握手处理。本文介绍通过DMUX的方式传输多比特信号。 二、DMUX同步跨时钟域数据 dmux表示数据分配器,该方…...

服务器停止解析域名,但仍然可以访问到

1.centos7 如何刷新dns缓存 在CentOS 7上,DNS缓存由nscd(Name Service Cache Daemon)管理,如果系统上安装了nscd,可以通过清除nscd缓存来刷新DNS缓存。 要刷新DNS缓存,请执行以下命令: sudo …...

Centos系统与Ubuntu系统防火墙区别,以及firewalld、ufw和iptables三者之前的区别。

现在大多数Centos系统上的防火墙是firewalld,Ubuntu系统上是ufw,而iptables是最底层的防火墙工具。iptables是Linux系统中最早的防火墙工具,并且被许多不同的Linux发行版使用,包括CentOS和Ubuntu。然而,CentOS 7及更高…...

ES6 学习(三)-- es特性

文章目录 1. Symbol1.1 使用Symbol 作为对象属性名1.2 使用Symbol 作为常量 2. Iterator 迭代器2.1 for...of循环2.2 原生默认具备Interator 接口的对象2.3 给对象添加Iterator 迭代器2.4 ... 解构赋值 3. Set 结构3.1 初识 Set3.2 Set 实例属性和方法3.3 遍历3.4 相关面试题 4…...

使用ChatGPT的场景之gpt写研究报告,如何ChatGPT写研究报告

推荐写研究报告使用智能站: dayfire.cn/ 1. 确定研究主题 明确主题:在开始之前,你需要有一个清晰的研究主题。这将帮助AI更好地理解你的需求…...

librdkafka的简单使用

文章目录 摘要kafka是什么安装环境librdkafka的简单使用生产者消费者 摘要 本文是Getting Started with Apache Kafka and C/C的中文版, kafka的hello world程序。 本文完整代码见仓库,这里只列出producer/consumer的代码 kafka是什么 本节来源&#…...

【iOS ARKit】播放3D音频

3D音频 在前面系列中,我们了解如何定位追踪用户(实际是定位用户的移动设备)的位置与方向,然后通过摄像机的投影矩阵将虚拟物体投影到用户移动设备屏幕。如果用户移动了,则通过VIO 和 IMU更新用户的位置与方向信息&…...

ES学习日记(四)-------插件head安装和一些配套插件下载

前言 接上节,第三方插件选择了时间久,功能丰富,长得丑的head,head 插件在ES 5版本以前开箱即用非常简单,ES 5版本以后需要运行在node环境下,所以我们要先准备一下环境 一.安装Git 不装了,明儿再说,看会儿手机准备下班!!!!!!!!!...

flask+uwsgi+云服务器 部署服务端

参考:使用uwsgi部署flask 报错 “找不到Python应用程序,请检查启动日志以查找错误” 或者: no python application found, check your startup logs for errors debug 过程:查到Python uWSGI 安装配置 里面说,先写测…...

linux学习之路 -- 普通用户添加进sudoer列表

在Linux系统里,很多的操作普通用户是不能执行的,所以我们需要对普通用户进行提权操作,可我们会发现,一开始没有配置的话,是无法的提权操作的,下面我将介绍普通用户该如何配置sudoer列表。 首先以root 的身…...

【分类评估指标,精确率,召回率,】from sklearn.metrics import classification_report

from: https://zhuanlan.zhihu.com/p/368196647 多分类 from sklearn.metrics import classification_report y_true [0, 1, 2, 2, 2] y_pred [0, 0, 2, 2, 1] target_names [class 0, class 1, class 2] # print(classification_report(y_true, y_pred, targe…...

element-ui autocomplete 组件源码分享

紧接着 input 组件的源码,分享带输入建议的 autocomplete 组件,在 element-ui 官方文档上,没有这个组件的 api 目录,它的 api 是和 input 组件的 api 在一起的,看完源码之后发现,源码当中 autocomplete 组件…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来

一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...

模型参数、模型存储精度、参数与显存

模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比

在机器学习的回归分析中,损失函数的选择对模型性能具有决定性影响。均方误差(MSE)作为经典的损失函数,在处理干净数据时表现优异,但在面对包含异常值的噪声数据时,其对大误差的二次惩罚机制往往导致模型参数…...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别

【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势&#xf…...

android RelativeLayout布局

<?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:gravity&…...

vue3 daterange正则踩坑

<el-form-item label"空置时间" prop"vacantTime"> <el-date-picker v-model"form.vacantTime" type"daterange" start-placeholder"开始日期" end-placeholder"结束日期" clearable :editable"fal…...

用鸿蒙HarmonyOS5实现中国象棋小游戏的过程

下面是一个基于鸿蒙OS (HarmonyOS) 的中国象棋小游戏的实现代码。这个实现使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chinesechess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├──…...

使用SSE解决获取状态不一致问题

使用SSE解决获取状态不一致问题 1. 问题描述2. SSE介绍2.1 SSE 的工作原理2.2 SSE 的事件格式规范2.3 SSE与其他技术对比2.4 SSE 的优缺点 3. 实战代码 1. 问题描述 目前做的一个功能是上传多个文件&#xff0c;这个上传文件是整体功能的一部分&#xff0c;文件在上传的过程中…...

Netty自定义协议解析

目录 自定义协议设计 实现消息解码器 实现消息编码器 自定义消息对象 配置ChannelPipeline Netty提供了强大的编解码器抽象基类,这些基类能够帮助开发者快速实现自定义协议的解析。 自定义协议设计 在实现自定义协议解析之前,需要明确协议的具体格式。例如,一个简单的…...