opencv,连续拍摄多张图像求平均值减少噪点

        对于照度低或者相机质量差造成的密集的随机小噪点,可以通过拍摄多张图像求平均值的方法来减少噪点,获得较为清晰的画面。

import cv2
import numpy as npclass FilterCamera:def __init__(self, cap, in_frame, num):self.cap = cap  # 定义的相机self.num = num   # 求平均值的帧数frame_float = in_frame.astype(float)self.frames = [frame_float] * self.numself.sum_frame = sum(self.frames)self.filtered_frame = self.sum_frame / self.num  # 平均后的图像# 输出画面def frame_out(self):# 从相机获取图像r, f = self.cap.read()if r:frame_float = f.astype(float)   # 转为浮点数,防溢出# pop操作self.sum_frame -= self.frames[0]self.sum_frame += frame_float# 求平均值并转换为uint8self.filtered_frame = (self.sum_frame / self.num).astype(np.uint8)self.frames = self.frames[1:] + [frame_float]return self.filtered_frame# cv2.imshow('Average Frame', self.average_frame)# 释放相机资源def release(self):self.cap.release()# #############################主程序###################################
if __name__ == '__main__':import threadingcap = cv2.VideoCapture(0)   # 连接到相机0ret, frame = cap.read()     # 读取相机数据if ret:filter_cam = FilterCamera(cap, frame, 5)   # 定义相机# 显示画面def show_frame():global timerframe = filter_cam.frame_out()   # 获取帧cv2.imshow('Video Frame', frame)  # 显示帧# 帧定时器timer = threading.Timer(0.05, show_frame)timer.start()show_frame()# 进程守护循环while True:if cv2.waitKey(1) & 0xFF == ord('q'):timer.cancel()   # 取消定时器filter_cam.release()   # 释放相机资源cv2.destroyAllWindows()   # 销毁窗口break

效果对比:

未降噪

 降噪后

与高斯滤波的效果相比,这种方法在降噪的同时不会使画面模糊,甚至更锐利。缺点是降低了帧率,比较适合对帧率要求不高的场合。

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

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

相关文章

使用dock构建基于lnmp的WrodPress

项目要求: 1.创建nginx容器环境 上传nginx.conf文件、上传阿里云镜像、上传html目录 2.准备mysql cd /opt mkdir mysql 上传my.conf文件、上传阿里云镜像、写好的Dockfile文件 3.准备php cd /opt mkdir php 上传所需文件: 构建各镜像: …

【深度学习】起源:人脑的神经结构

文章目录 睁眼看世界,倾耳听人间脑子,是个好东西!眼睛成像其它身体感触系统脑子:我很忙的!脑细胞:脑子里的打工人生物神经元——结构生物神经元——人脑的运算单位 人脑的深度学习总结 睁眼看世界&#xff…

RHCE(免密登录+web服务器)之小试牛刀

1、配置linux客户端免密登录服务端linux主机的root用户 2、配置web服务器,当访问网站www.haha.com时显示:haha 3、配置web服务器,当访问网站www.xixi.com/secret/显示:this is secret 本实验使用RHEL9.3和Rocky linux8操作系统 RH…

【Linux 15】进程间通信的方式 - 管道

文章目录 🌈 一、管道介绍🌈 二、匿名管道⭐ 1. 匿名管道的概念⭐ 2. 匿名管道的创建⭐ 3. 匿名管道的本质⭐ 4. 匿名管道的使用⭐ 5. 匿名管道的特点⭐ 6. 匿名管道的大小 🌈 三、命名管道⭐ 1. 命名管道的概念⭐ 2. 命名管道的创建⭐ 3. 命…

通讯录管理系统(C语言)

需求及功能分析 本系统主要划分为8个子系统&#xff0c;如下图所示。 增加联系人模块删除联系人模块查找联系人模块插入联系人模块保存联系人模块加载联系人模块显示联系人模块退出模块 具体代码 #include <stdio.h> #include <string.h> #include <stdlib…

前端八股文 $set

为什么会有$set vue2中对数组中新增的属性是监听不到的 如图 vue 插件中有但是 视图中没有刷新 解决方法 解决就是 $set() 就是在数组中新增属性的时候可以重新渲染视图 具体的写法 写法 就是 第一个 是在那个对象上新增 第二个参数 是新增的属性 第三个参数是 新增的属性…

R语言画散点图-饼图-折线图-柱状图-箱线图-等高线图-曲线图-热力图-雷达图-韦恩图(三D)

R语言画散点图-饼图-折线图-柱状图-箱线图-等高线图-曲线图-热力图-雷达图-韦恩图&#xff08;三D&#xff09; 散点图使用 plotly 包示例解析效果 使用 scatterplot3d 包示例解析效果 饼图使用 plotly 包示例解析效果 使用 plotrix 包示例解析效果 折线图使用 plotly 包示例解…

在STM32嵌入式中C/C++语言对栈空间的使用

像STM32这样的微控制器在进入main函数之前需要对栈进行初始化。可以说栈是C语言运行时的必要条件。我们知道栈实际上是一块内存空间&#xff0c;那么这块空间都用来存储什么呢&#xff1f;有什么办法能够优化栈空间的使用&#xff1f; 栈空间保存的内容 栈是一个先入后出的数据…

mac无法清空废纸篓怎么办 mac废纸篓清空了如何找回 cleanmymac误删文件怎么恢复

废纸篓相当于“一颗后悔药”&#xff0c;用于临时存储用户删除的文件。我们从从Mac上删除的文件&#xff0c;一般会进入废纸篓中。如果我们后悔了&#xff0c;可以从废纸篓中找回来。然而&#xff0c;有时我们会发现mac无法清空废纸篓&#xff0c;这是怎么回事?本文将探讨一些…

【数据结构初阶】顺序表

hi&#xff0c;我们又见面啦&#xff01;happy~~~ 目录 前言&#xff1a; 一、线性表 二、顺序表 1、概念 2、与数组的区别 3、分类 4、动态顺序表的实现 SeqList.h 见下 SeqList.c 见下 test.c 见下 【注意】 ————————————— 致回不去的童年 ———…

前端调试技巧:动态高亮渲染区域

效果&#xff1a; 前端界面的渲染过程、次数&#xff0c;会通过高亮变化来显示&#xff0c;通过这种效果排除一些BUG 高亮 打开方式 F12进入后点击ESC&#xff0c;进入rendering&#xff0c;选择前三个即可&#xff08;如果没有rendering&#xff0c;点击橘色部分勾选上&…

swiftui使用ScrollView实现左右滑动和上下滑动的效果,仿小红书页面

实现的效果如果所示&#xff0c;顶部的关注用户列表可以左右滑动&#xff0c;中间的内容区域是可以上下滚动的效果&#xff0c;点击顶部的toolbar也可以切换关注/发现/附近不同页面&#xff0c;实现翻页效果。 首页布局 这里使用了NavigationStack组件和tabViewStyle样式配置…

zerotier安装后设备在线,两个设备无法ping通

来源 组 NAS&#xff0c; 软路由&#xff0c;内网穿透&#xff0c;远程访问&#xff0c;安装了 zerotier&#xff0c;无法ping通 方法 修改windows防火墙&#xff0c;Configure the Windows firewall to allow pings。 Search for and open Windows Firewall.Select Advance…

Node.js快速入门

Node.js 1、Node.js介绍与安装 官网&#xff1a;https://nodejs.cn/ 介绍&#xff1a;简单的说 Node.js 就是运行在服务端的 JavaScript。 Node.js 是一个基于 Chrome JavaScript 运行时建立的一个平台。 Node.js 是一个事件驱动 I/O 服务端 JavaScript 环境&#xff0c;基…

Python | Leetcode Python题解之第274题H指数

题目&#xff1a; 题解&#xff1a; class Solution:def hIndex(self, citations: List[int]) -> int:left,right 0,len(citations)while left<right:# 1 防止死循环mid (leftright1)>>1cnt 0for v in citations:if v>mid:cnt1if cnt>mid:# 要找的答案在…

哈希 -- 简单实现

在STL库中&#xff0c;有map和set两个关联式容器&#xff0c;这两个容器的底层都是以红黑树为底层。但是在后续的发展过程中&#xff0c;我们发现有些场景的数据不适合用红黑树进行存储&#xff0c;所以有人就发明了底层为哈希表的map和set,称为unordered_map 和 unordered_set…

C语言中的控制语句(一):if语句

文章目录 &#x1f34a;自我介绍&#x1f34a;if 的单分支语句&#x1f34a;a.if 单分支判断&#x1f34a;b.if单分支选择判断 &#x1f34a;if多分支语句&#x1f34a;if多分支选择判断 你的点赞评论就是对博主最大的鼓励 当然喜欢的小伙伴可以&#xff1a;点赞关注评论收藏&a…

MMCV 核心组件分析(一):整体概述

概述 MMCV 是计算机视觉研究的基础库&#xff0c;并提供以下功能。

(11)Python引领金融前沿:投资组合优化实战案例

1. 前言 本篇文章为 Python 对金融的投资组合优化的示例。投资组合优化是从一组可用的投资组合中选择最佳投资组合的过程&#xff0c;目的是最大限度地提高回报和降低风险。 投资组合优化是从一组可用的投资组合中选择最佳投资组合的过程&#xff0c;目的是最大限度地提高回报…

单例模式_Golang

目录 一、单例模式 1.1 基本概念 1.2 使用场景 二、Golang实现 2.1 懒汉模式&#xff08;Lazy Loading&#xff09; 一、单例模式 1.1 基本概念 一个类只能生成一个实例&#xff0c;且该类能自行创建这个实例的一种模式,这个定义个人感觉可以拆的通俗一些,在项目的生命周…