用opencv-python和matplotlib实现视频的颜色直方图的动态显示
简介
对于一张图片可以计算它的颜色直方图,对于一个视频可以逐帧计算每一帧的颜色直方图,最近做一个东西需要对视频进行直方图提取,但ffmpeg的命令只能将直方图打印在视频上,也不能导出直方图的数据,所以只能另辟蹊径自己手动写一个。
环境
vscode(配置好了anaconda的python路径)。
opencv-python库
matplotlib库
代码
import cv2
import matplotlib.pyplot as plt
plt.ion() #开启动态绘图
plt.figure() #建立图窗
cap = cv2.VideoCapture('I(720p).avi') #调用本地文件,如果为0则调成实时摄像头
while(True):plt.clf() #清屏,如果不清则会无限叠加之前的作图ret, frame = cap.read() #ret为True or False,frame为读取的每帧图像的数组if ret == False:break; #帧读取完的时候ret就会从True变成Falsegray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) #进行灰度处理cv2.imshow('Grayscale', gray) #展示视频图像hist = cv2.calcHist([gray],[0],None,[256],[0,256]) #计算直方图plt.plot(hist) #作图plt.draw() #绘图展现cv2.waitKey(1) #等待1ms 可替换成plt.pause()
cap.release()
19行的极简代码,可以自行扩展,总的来说就是把图像一帧一帧的读入,然后用cv2.calcHist函数来计算直方图,分箱数为256,对应0-255个像素值,返回的是hist数组,需要使用plt.plot进行绘图,同时此处也可以写代码将它导出进行后续处理。
碰见最大的问题是动态显示,请自行测试环境,我是直接运行py文件表示没有问题,如果是jupyter notebook那种环境可能需要figure.canvas.draw()函数,在我这里这个是没有效果的。
实现效果
图片过大已裁剪。需自行调整窗口大小。
用opencv-python和matplotlib实现视频的颜色直方图的动态显示相关推荐
- opencv python 从摄像头获取视频、帧率、分辨率等属性设置和使用
opencv python 从摄像头获取视频.帧率.分辨率等属性设置和使用 文章目录: 1,为了获取视频,你应该创建一个 VideoCapture 对象.他的参数可以是设备的索引号,或者是一个视频文件 ...
- opencv mat release thrown_【OpenCV+Python】图像与视频处理入门
图像处理入门 之前我们已经讲过了OpenCV在各个平台上安装的方法了,从今天开始,正式进入实战部分.首先我们需要做的就是如何读取图像并显示出来,这是图像处理的最基本的部分. 首先我们来了解几个函数. ...
- Opencv Python:图片与视频互转
视频转图片 # -*- coding: UTF-8 -*- """ @项目名称:PlayerCharOCR.py @作 者:陆地起飞全靠浪 @创建日期:2022-03-1 ...
- opencv+python视频实时质心显示
利用opencv+python实现以下功能: 1)获取实时视频,分解帧频: 2)将视频做二值化处理: 3) 将视频做滤波处理(去除噪点,获取准确轮廓个数): 4)识别图像轮廓: 5)计算质心: 6)描 ...
- opencv python 识别视频水印_opencv+python实现视频实时质心读取
利用opencv+python实现以下功能: 1)获取实时视频,分解帧频: 2)将视频做二值化处理: 3) 将视频做滤波处理(去除噪点,获取准确轮廓个数): 4)识别图像轮廓: 5)计算质心: 6)描 ...
- python opencv按照一定间隔保存视频帧
python opencv按照一定间隔保存视频帧 文章目录: 一.获取视频流的相关参数 二.设置间隔保存视频帧 想实现opencv读取视频帧,按照一定的时间间隔然后保存图片下来,因为所有的帧都保存下来 ...
- OpenCV + python 实现人脸检测(基于照片和视频进行检测)
OpenCV + python 实现人脸检测(基于照片和视频进行检测) Haar-like 通俗的来讲,就是作为人脸特征即可. Haar特征值反映了图像的灰度变化情况.例如:脸部的一些特征能由矩形特征 ...
- python opencv输出mp4_Python玩转视频处理(四):视频按场景进行分割
在上一篇文章(python在手,女神视频轻松有)分享了用AI人脸识别技术标记人物出现时间点来截取视频片段的教程,它的局限性在于只能通过识别特定的对象(比如人脸)来操作.在本文中将分享一个按场景进行分割 ...
- python调用摄像头录制视频_Python OpenCV使用摄像头捕获视频
我们知道,OpenCV是一款强大的跨平台的计算机视觉库,使用它能完成我们对于图像和视频处理的很多功能,今天,我们使用OpenCV来捕获计算机摄像头的视频. 使用OpenCV捕获摄像头视频 我们知道,视 ...
最新文章
- 对IsUnderPostmaster变量初步学习
- 新年总结:2018年,是我妈最快乐的一年
- python尝试不同的随机数进行数据划分、使用卡方检验依次计算不同随机数划分下训练接和测试集所有分类特征的卡方检验的p值,如果所有p值都大于0.05则训练集和测试集都具有统计显著性、数据划分合理
- es配置中防止脑裂的配置
- Linux常用服务部署与优化之NFS篇
- 网络流--最大流--Dinic模板矩阵版(当前弧优化+非当前弧优化)
- queue java 用法_Java队列(Queue)用法
- 复工后,看看他们都是怎么上班的!
- SAP中货源清单创建的几种方法
- 简单实现UITableView索引功能(中英文首字母索引)(一) ByH罗
- 购物车的数据应该保存在哪?
- 红安一中高考2021成绩查询,红安一中2019高考喜报成绩、一本二本上线人数情况...
- 机械制图中外螺纹的画法_机械制图基础常识42条,条条都是经典!
- java编写设置按钮随机背景色_java – 如何设置自定义按钮状态背景颜色?
- 在线XML转CSV工具
- 三种分布式爬虫系统的架构方式
- 计算机毕业论文java毕业设计成品源码网站基于SSM实现的财务|记账|账单管理系统
- Android 6.0 inflate过程分析
- (实战)Node.js 实现抢票小工具短信通知提醒
- 2017云栖大会大咖演讲PPT+视频官方资料合集来啦!