52phm简介


专注于工业智能预警系统研发, 通过机理算法和数据驱动算法分析振动信号、音频、DCS、PLC信号、SCADA信号等设备运行状态数据对机器设备进行看病预诊,为机器设备健康运行保驾护航。 网站正在不断建设和完善过程中,欢迎大家给予建议和参与社区建设

联系我们


投稿说明


52phm,专注于预测性维护知识学习和交流,欢迎广大从事预测性维护行业人员投稿,投稿请联系管理员(wx: www52phmcn),投稿内容可以是:

  • 学习笔记
  • 技术理论
  • 工程案例
  • 行业资讯

加入我们


官方公众号:52phm,专注预测性维护的学习平台

2022-03-31 21:39:22    博客笔记    506    当前专栏:图像预处理    分类:算法开发    本站官网:www.52phm.cn   

公众号 ...

  • @date: 2020-05-05
  • @authur: 小知同学
  • @project: OpenCV视频处理

前言

opencv视频处理主要设计了实时摄像头读取视频,本地视频读取并处理两个大的方面,
主要介绍了视频读取及处理的基本操作,内容概述如下:
* 摄像头视频读入、本地视频读入 * 图像及视频写入保存 * 视频流单帧单帧处理 * 每一帧视频流的基本属性,如帧率、视频流宽度高度等

!pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python
    Requirement already satisfied: opencv-python in /opt/conda/lib/python3.6/site-packages
    Requirement already satisfied: numpy>=1.11.3 in /opt/conda/lib/python3.6/site-packages (from opencv-python)

1.读取摄像头实时视频

# -*- coding: utf-8 -*-
"""
Created on Sat May  5 17:25:21 2020

@author: 小知
"""
# 1.读取视频
import cv2 as cv


"""cv.VideoCapture(0)
@params: 读取摄像头——>设备索引,如0,1,2,...n
         读取本地视频——>"D:/video/test.mp4"
"""
cap = cv.VideoCapture(0)

# 基本属性
fps = cap.get(5)  # 帧率
frame_width = cap.get(3)  # 每一帧视频流宽度
frame_height = cap.get(4)  # 每一帧视频流高度
now_position = cap.get(0)  # 获取当前播放进度位置
fourcc = cv.VideoWriter_fourcc(*'XVID')  # 视频编码器
print(fps, frame_width, frame_height, now_position)

# 创建视频保存对象
out = cv.VideoWriter("data/video/test.mp4",  # 保存视频路径 mp4, avi
                     -1,  # 视频编码器,为-1可自动匹配
                     int(fps),  # 帧率
                     (int(frame_width), int(frame_height)))  # 每一帧视频流宽度及高度

# 2.逐帧读取视频为图像进行处理
num = 1
while cap.isOpened():
    """cap.read()
    @return1:True or False,True 代表读取成功
    @return2:视频流的每一帧图像数组值
    """
    ret, frame = cap.read()
    if not ret:
        print(">>>视频读取为空,正在退出程序.....")
        break
    cv.imshow("frame", frame)

    """点击视频框,按'q'退出程序, 中止视频流播放
    if cv.waitKey(1) == ord('q'):
        break
    """
    if cv.waitKey(1) == ord('q'):
        break

    """图像保存:保存每一帧视频流的图片
    cv.imwrite("data/img/" str(num) ".png", frame)
    """
    cv.imwrite("data/img/" str(num) ".png", frame)

    """视频保存:
    out = cv.VideoWriter("data/video/test.mp4",  # 保存视频路径
                     -1,  # 视频编码器,为-1可自动匹配
                     int(fps),  # 帧率
                     (int(frame_width), int(frame_height)))  # 每一帧视频流宽度及高度
    out.write(frame)
    """
    out.write(frame)
    num = 1

# 3.完成所有操作后,释放捕获器
cap.release()
cv.destroyAllWindows()
    0.0 0.0 0.0 0.0

2.读取本地视频

# -*- coding: utf-8 -*-
"""
Created on Sat May  5 21:02:17 2020

@author: 小知
"""
# 1.读取视频
import cv2 as cv


"""cv.VideoCapture(0)
@params: 读取摄像头——>设备索引,如0,1,2,...n
         读取本地视频——>"D:/video/test.mp4"
"""
cap = cv.VideoCapture("data/video/test.mp4")

# 基本属性
fps = cap.get(5)  # 帧率
frame_width = cap.get(3)  # 每一帧视频流宽度
frame_height = cap.get(4)  # 每一帧视频流高度
now_position = cap.get(0)  # 获取当前播放进度位置
fourcc = cv.VideoWriter_fourcc(*'XVID')  # 视频编码器
print(fps, frame_width, frame_height, now_position)

# 创建视频保存对象
out = cv.VideoWriter("data/video/2_test.mp4",  # 保存视频路径 mp4, avi
                     -1,  # 视频编码器,为-1可自动匹配
                     int(fps),  # 帧率
                     (int(frame_width), int(frame_height)))  # 每一帧视频流宽度及高度

# 2.逐帧读取视频为图像进行处理
num = 1
while cap.isOpened():
    """cap.read()
    @return1:True or False,True 代表读取成功
    @return2:视频流的每一帧图像数组值
    """
    ret, frame = cap.read()
    if not ret:
        print(">>>视频读取为空,正在退出程序.....")
        break
    cv.imshow("frame", frame)

    """点击视频框,按'q'退出程序, 中止视频流播放
    if cv.waitKey(1) == ord('q'):
        break
    """
    if cv.waitKey(1) == ord('q'):
        break

    """图像保存:保存每一帧视频流的图片
    cv.imwrite("data/img/" str(num) ".png", frame)
    """
    cv.imwrite("data/img/2_" str(num) ".png", frame)

    """视频保存:
    out = cv.VideoWriter("data/video/test.mp4",  # 保存视频路径
                     -1,  # 视频编码器,为-1可自动匹配
                     int(fps),  # 帧率
                     (int(frame_width), int(frame_height)))  # 每一帧视频流宽度及高度
    out.write(frame)
    """
    out.write(frame)
    num = 1

# 3.完成所有操作后,释放捕获器
cap.release()
cv.destroyAllWindows()
    0.0 0.0 0.0 0.0

参考资料

[1] 视频获取与显示,https://www.cnblogs.com/fahaihappy/p/12555356.html
[2] 视频流每一帧属性等,https://blog.csdn.net/weixin_42020284/article/details/85016446

免责声明


[推荐] python使用窗函数处理频谱泄露

2022-02-11 13:19:32    博客笔记    905    分类:算法开发    专栏:振动信号预处理   


[推荐] 计算机视觉-OpenCV图像处理模块

2022-03-31 21:15:04    博客笔记    558    分类:算法开发    专栏:图像预处理   


[推荐] 齿轮故障诊断的实验数据集及python处理

2022-08-09 16:05:36    博客笔记    541    分类:边缘感知    专栏:齿轮箱数据集   



转发此文章到社区


关注公众号进群

让志同道合读者学习交流



python机器学习与特征工程理论与代码实现

通过python编程语言实现特征工程功能,本篇特征工程文章较为全面的介绍数据预处理,缺失值处理方法、异常值处理方法、数据无量纲、标准化、归一化,另外还介绍特征选择、特征降维等特征工程知识

2021-12-04 12:12:30    博客笔记    4525    分类:算法开发    专栏:特征工程   


滚动轴承故障特征频率计算公式

依据滚动轴承的结构参数,可以计算出轴承滚道外圈故障、滚道内圈故障、滚动体故障和保持架故障所产生的特征频率,具体的计算公式如下:(1)外圈故障(2)内圈故障(3)滚动体故障(4)保持架故障式中:ddd代表滚动体直径,DDD表示滚道节径,α\alphaα表示轴承接触角,zzz表示滚动体个数,fff表示转频...

2021-12-08 10:24:10    互联网    1725    分类:算法开发    专栏:故障诊断   


异常分析介绍-《Outlier Analysis 2nd Edition》

异常值是与其余数据存在显然不同的数据点。 霍金斯定义异常值如下: <br> “异常值是一个与其他观察结果有很大差异的观察结果,以此引起人们怀疑它是由不同的机制产生的”。 <br> 在数据挖掘和统计学文献中,异常值也被称为abnormalities、discordants、deviants或anomalies。 在大多数应用中,数据是由一个或多个生成过程创建的,这些生成过程既可以反映系统中的活动,也可以反映收集的有关实体的观察结果。当生成过程表现异常时,会导致创建异常值。 因此,异常经常包含有关系统和实体影响数据生成过程的异常特征的有用信息。 对这些不寻常的特性的认识提供了有用的应用特定见解。 一些例子如下:

2021-12-21 11:00:12    互联网    424    分类:算法开发    专栏:工业异常检测   


语音信号的预处理

概述语音信号是一种非平稳的时变信号,它携带着大量信息。在语音编码、语音合成、语音识别和语音增强等语音处理中,都需要提取语音中包含的各种信息语音处理的目的对语音信号进行分析,提取特征参数,用于后续处理加工语音信息,如语音增强和语音合成中的应用根据所分析的参数类型,语音信号可以分成:时域分析最简单、最直观直接对语音信号的时域波形进行分析特征参数:语音的短时能力、平均幅度、短时...

2022-01-13 16:53:53    互联网    790    分类:算法开发    专栏:语音信号预处理   


【数字信号处理】--数字信号分析与处理基础知识

文章目录一、信号的时域分析1.1信号波形参数识别1.2检测方法 过零检测法1.3数字信号微分与数字信号积分二、信号的频域分析2.1周期信号的频谱分析2.2 信号的频谱分析2.3数字信号的频谱计算方法三、信号的时差域相关分析3.1信号的相关系数3.2 相关应用3.3 数字滤波器和模拟滤波器的区别四、信号的幅值域分析4.1概率密度曲线与概率分布曲线的应用五、信号的数字滤波5.1滤波器概念5.2频率域滤波:5.3时域滤波5.4 时域FIR滤波器5.5 IIR滤波器5.6 其他滤波器5.7 数字音乐均衡器的设计六、

2022-01-13 17:40:13    互联网    343    分类:算法开发    专栏:数字信号处理   


python第一个hello world程序

window环境下运行新建一个hello.py文件# -*- coding: utf-8 -*-print("Hello, World!")如果安装了pycharm或者其它编辑器,那么可以直接运行hello world程序

2022-01-17 22:21:56    博客笔记    486    分类:算法开发    专栏:python基础   


python数据类型

python数据类型python编程语言中有6个标准的数据类型,如下:String(字符串)Number(数字)Tuple(元组)List(列表)Dictionary(字典)Set(集合)其中,python的6大数据类型中,又可以分为可变数据和不可变数据,具体如下:可变数据类型:列表、字典、集合不可变数据类型:字符串、数字、元组如何理解可变、不可变数据类型呢?小知解答:可变是指在初始化相应数据之后,仍然可以编辑;不可变是指初始化相应数据之后,不可以再次编辑下面分别对各个

2022-01-19 13:19:38    博客笔记    886    分类:算法开发    专栏:python基础   


PIL图像预处理实操

1 PIL基本操作:主要是为了介绍 PIL 打开、展示和保存图像的基本运用。 2 图像处理:这个主要是为了对原始图像进行再处理,从而使图像符合我们的需求, 通常这里的处理情况会影响到模型训练的精度和准。 3 图像向量化:由于图片是非结构化数据,计算机不能直接识别处理, 因此需要向量化处理,从而转换成结构化数据 4 图像识别分类实战:主要是以步骤性来讲述,方便掌握

2022-03-10 16:18:19    博客笔记    828    分类:算法开发    专栏:图像预处理   


音频处理库—librosa的安装与使用

目录序言一、libsora安装pypicondasource二、librosa常用功能核心音频处理函数音频处理频谱表示幅度转换时频转换特征提取绘图显示三、常用功能代码实现读取音频提取特征提取Log-Mel Spectrogram 特征提取MFCC特征绘图显示绘制声音波形绘制频谱图序言Librosa是一个用于...

2022-03-23 22:43:42    互联网    2512    分类:算法开发    专栏:语音信号预处理   


tensorflow系列-深度学习中的激活函数

所谓激活函数(Activation Function),就是在人工神经网络的神经元上运行的函数,负责将神经元的输入映射到输出端。激活函数(Activation functions)对于人工神经网络模型去学习、理解非常复杂和非线性的函数来说具有十分重要的作用。它们将非线性特性引入到我们的网络中。如图1,在神经元中,输入的 inputs 通过加权,求和后,还被作用了一个函数,这个函数就是激活函数。引入激活函数是为了增 加神经网络模型的非线性。没有激活函数的每层都相当于矩阵相乘。就算你叠加了若干层之后,无非还是个矩阵相乘罢了。

2022-03-31 22:05:32    博客笔记    602    分类:算法开发    专栏:未分组   


  • 52phm公告

  • 在这里,可以学习接触到工业互联网技术知识以及落地案例,其中涵盖工业数据集、工业标准库、机理模型、设备知识、机器学习、 深度学习、特征工程、振动分析、工业视觉、边缘硬件及传感器等技术知识!


图像预处理   
  • 关于站长


  •         从事设备故障预测与健康管理行业多年的PHM算法工程师(机器医生)、国际振动分析师, 实践、研发和交付的项目涉及“化工、工业机器人、风电机组、钢铁、核电、机床、机器视觉”等领域。专注于工业智能预警系统研发, 通过机理算法和数据驱动算法分析振动信号、音频、DCS、PLC信号、SCADA信号等设备运行状态数据对机器设备进行看病预诊,为机器设备健康运行保驾护航。


当前文章目录


52phm社区

52phm社区,专注预测性维护的学习平台!

Saas体验

+ 工业demo学习系统

技术博客

+ 博客首页    + 算法开发    + 边缘感知   

+ 设备机理    + 开发环境

+ 论文速递   

友情链接

+ 在码圈

联系我

Copyright© 2021 52phm社区

京ICP备2021029973号-1