opencv+python视频实时质心显示
利用opencv+python实现以下功能:
1)获取实时视频,分解帧频;
2)将视频做二值化处理;
3) 将视频做滤波处理(去除噪点,获取准确轮廓个数);
4)识别图像轮廓;
5)计算质心;
6)描绘质心动态变化曲线;
# -*- coding: utf-8 -*-
"""
Created on Thu Apr 24 12:10:23 2018 @author: irene
""" import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import spline
import math as mt
import cv2 cap = cv2.VideoCapture('1.avi') #读入视频
c=1
plt.figure(figsize=(8,8),dpi=80)
aa =[]
bb =[]
cc =[]
#uing = np.logspace(-3,2,121)
while(cap.isOpened()):
ret, frame = cap.read()
#分解为一帧一帧图像
if ret == True:
#cv2.imshow("frame",image)
img=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY) #彩色转灰度
# print(frame)
ret,thresh= cv2.threshold(img,127,255,0) #二值化
image,contours,hierarchy = cv2.findContours(thresh, 3, 1)
img = cv2.medianBlur(image,5) #进行中值滤波 cnt = contours[1] #选取其中的第一个轮廓,这幅图像只有两个轮廓
M = cv2.moments(cnt)
cX=int(M["m10"]/M["m00"]) #计算质心
cY=int(M["m01"]/M["m00"]) cv2.drawContours(img,contours,-1,(0,255,0),2)
cv2.circle(img,(cX,cY),7,(255,255,255),-1)
cv2.putText(img,"",(cX-20,cY-20),
cv2.FONT_HERSHEY_SIMPLEX,0.5,(255,255,255),2) cv2.imshow("img",img)
cv2.imwrite('img/'+str(c) + '.jpg',frame) #存储为图像 # for u in uing:
aa.append(cX)
bb.append(cY)
cc.append(c)
# plt.plot(c,cX,'k-') #plt.plot(c,cX,color='red',linewidth=2.5,linestyle=':')
# plt.plot(c,cX,'k^')
#plt.plot(c,cY,'yo:')
c = c+1 else:
break
# cv2.imshow('frame',gray) #显示标记后的图像q if cv2.waitKey(1) & 0xFF == ord('q'):
break cap.release()
cv2.destroyAllWindows() c1=np.var(aa)
c2=np.var(bb) c1_1=c1/720*2.3*mt.pi/180
c1_2=c2/512*2.3*mt.pi/180 print(c1_1)
print(c1_2) plt.plot(cc,aa)
plt.show()
plt.plot(cc,bb)
plt.show()
opencv+python视频实时质心显示的更多相关文章
- openCV—Python(2)—— 载入、显示和保存图像
一.函数简单介绍 1.imread-读取图像 函数原型:imread(filename, flags=None) filename:读取的图像路径名:比如:"H:\img\lena.jpg& ...
- OpenCV Python 录制视频
调用摄像头 引入库支持 初始化 调整界面大小 实时显示 录制视频并保存 fourcc问题解决 代码实现 效果展示 总结 学到实用OpenCV调用笔记本电脑的摄像头,并录制视频保存到本地硬盘的时候,出现 ...
- OpenCV + python 实现人脸检测(基于照片和视频进行检测)
OpenCV + python 实现人脸检测(基于照片和视频进行检测) Haar-like 通俗的来讲,就是作为人脸特征即可. Haar特征值反映了图像的灰度变化情况.例如:脸部的一些特征能由矩形特征 ...
- OpenCV Python教程(3、直方图的计算与显示)
转载请详细注明原作者及出处,谢谢! 本篇文章介绍如何用OpenCV Python来计算直方图,并简略介绍用NumPy和Matplotlib计算和绘制直方图 直方图的背景知识.用途什么的就直接略过去了. ...
- EV录屏 --- 免费无水印,集视频录制与直播功能于一身的桌面录屏软件, 支持录屏涂鸦、实时按键显示、视频体积压缩等实用功能
https://www.ieway.cn/index.html 免费无水印,集视频录制与直播功能于一身的桌面录屏软件,支持录屏涂鸦.实时按键显示.视频体积压缩等实用功能 EVCapture 3.9.7 ...
- 基于OpenCV之视频读取,处理和显示框架的搭建(一)
主要包括以下内容: 1.使用的主要函数的说明. 2.两个实例:视频读取和显示.搭建视频读取和处理框架,调用canny函数提取边缘并显示. 3.一些注意事项和代码说明. 一.使用的主要函数 1.延时函数 ...
- 基于opencv将视频转化为字符串Java版
基于opencv将视频转化为字符串Java版 opencv java 先上一个效果图吧 首先,弄清一下原理 我们要将视频转化为字符画,那么就需要获取画面的每一帧,也就是每一张图片,然后将图片进行转化 ...
- opencv打开视频文件出错
使用C#调用mingw的so文件,在C++端使用opencv打开视频.这样的项目完成过了一个,第二次做的时候,发现opencv打开视频文件出错. 首先怀疑是opencv的opencv_ffmpeg24 ...
- OpenCV学习笔记(2)——如何用OpenCV处理视频
如何用OpenCV处理视频 读取视频文件,显示视频,保存视频文件 从摄像头获取并显示视频 1.用摄像头捕获视频 为了获取视频,需要创建一个VideoCapature对象.其参数可以是设备的索引号,也可 ...
随机推荐
- C指针和数组
一.指针 指针就是地址,指针变量是用来存放地址的变量,把谁的地址存放在指针变量中,就说此指针变量指向谁. 二.数组 1.一维数组 一维数组名代表数组首元素的地址,因此 *a=a[0]; &:取 ...
- MVC与WebApi中的异常过滤器
一.MVC的异常过滤器 1.自定义MVC异常过滤器 创建一个类,继承HandleErrorAttribute即可,如果不需要作为特性使用直接实现IExceptionFilter接口即可, 注意,该 ...
- 设计模式之Proxy(代理)
设计模式之Proxy(代理) 板桥里人banq http://www.jdon.com 2002/04/21/ 理解并使用设计模式,能够培养我们良好的面向对象编程习惯,同时在实际应用中,可以如鱼得水, ...
- Vue中$refs的用法
说明:vm.$refs 一个对象,持有已注册过 ref 的所有子组件(或HTML元素) 使用:在 HTML元素 中,添加ref属性,然后在JS中通过vm.$refs.属性来获取 注意:如果获取的是一个 ...
- IOS XMPP(即时通讯的框架)
#import "AppDelegate.h" #import "XMPPFramework.h" /* * 在AppDelegate实现登录 1. 初始化XM ...
- python操作mysql二
游标 游标是一种能从包括多条数据记录的结果集中每次提取一条记录的机制,游标充当指针的作用,尽管游标能遍历结果中的所有行,但它一次只指向一行,游标的作用就是用于对查询数据库所返回的记录进行遍历,以便进行 ...
- Webpack知识汇总
介绍 webpack把任何一个文件都看成是一个模块,模块间可以相互依赖(require or import),webpack的功能就是把相互依赖的文件打包在一起.webpack本身只能处理原生的Jav ...
- apache2 重启、停止、优雅重启、优雅停止
停止或者重新启动Apache有两种发送信号的方法 第一种方法: 直接使用linux的kill命令向运行中的进程发送信号.你也许你会注意到你的系统里运行着很多httpd进程.但你不应该直接对它们中的任何 ...
- 【php】php与mysql初体验
第一次体验在web站点上使用MySQL数据库,遇到了很多问题,总结如下: 1.安装XAMPP软件后,将文件放到hotdocs文件夹下,要访问其中的文件,使用localhost/XXX/XXX ,路径要 ...
- ethereumjs/merkle-patricia-tree-2-API
SecureTrie src/secure.js:10-15 Extends Trie 扩展前缀树 You can create a secure Trie where the keys are au ...