利用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 cv2cap = 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)  #显示标记后的图像qif 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/180print(c1_1)
print(c1_2)plt.plot(cc,aa)
plt.show()
plt.plot(cc,bb)
plt.show()

cv2.findContours()报错ValueError: not enough values to unpack (expected 3, got 2),应该将opencv升级或降级为3。
OpenCV2和OpenCV4中:findContours这个轮廓提取函数会返回两个值:①轮廓的点集(contours);②各层轮廓的索引(hierarchy)。 OpenCV3中:则会返回三个值: ①处理的图像(image);②轮廓的点集(contours);③各层轮廓的索引(hierarchy)。
cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)三个参数:
①第一个参数:寻找轮廓的图像;
②第二个参数表示轮廓的检索模式,有四种: cv2.RETR_EXTERNAL 只检测外轮廓 cv2.RETR_LIST 检测的轮廓不建立等级关系 cv2.RETR_CCOMP 建立两个等级的轮廓,上面的一层为外边界,里面的一层为内孔的边界信息 cv2.RETR_TREE 建立一个等级树结构的轮廓;
③第三个参数method为轮廓的近似办法: cv2.CHAIN_APPROX_SIMPLE 压缩水平方向,垂直方向,对角线方向的元素,只保留该方向的终点坐标(矩形只需四顶点) cv2.CHAIN_APPROX_TC89_L1 使用teh-Chinl chain 近似算法 CV_CHAIN_APPROX_TC89_KCOS cv2.CHAIN_APPROX_NONE 存储所有的轮廓点,相邻的两个点的像素位置差不超过1。

转自https://www.cnblogs.com/guobin-/p/10842486.html

opencv+python视频实时质心显示相关推荐

  1. 用Numba加速OpenCV Python视频处理代码,提升6.5倍性能

    使用Numba对OpenCV Python视频处理代码加速.性能提升6.5倍 1.目标问题: 在 OpenCV Python 中视频处理是比较耗资源的,从而造成画面卡顿,如果跳帧处理可能造成丢失关键数 ...

  2. opencv python 识别视频水印_opencv+python实现视频实时质心读取

    利用opencv+python实现以下功能: 1)获取实时视频,分解帧频: 2)将视频做二值化处理: 3) 将视频做滤波处理(去除噪点,获取准确轮廓个数): 4)识别图像轮廓: 5)计算质心: 6)描 ...

  3. opencv播放视频实时显示帧速(FPS),即是每秒帧数

    FPS是测量用于保存.显示动态视频的信息数量.通俗来讲就是指每秒变化的画面数. getTickCount: 它返回从操作系统启动到当前所经过的毫秒数,常常用来判断某个方法执行的时间,其函数原型是DWO ...

  4. OpenCV—Python视频的读取及保存

    运行环境 Anaconda=5.3 | python=3.7 一.从摄像头中获取视频 创建一个VideoCapture对象.它的参数可以是设备索引或视频文件的名称(下面会讲到).设备索引只是指定哪台摄 ...

  5. ffmpeg和opencv 播放视频文件并显示

    ffmpeg是基于最新版本,在官网下载http://ffmpeg.zeranoe.com/builds/.编译时VS2010配置相关头文件及库的路径即可.opencv的搭建参考上一个博客. 首先简单介 ...

  6. opencv实现视频实时去雾算法

    现在一系列的文章,有不少算法都于去雾有关,比如限制对比度自适应直方图均衡化算法原理.实现及效果.局部自适应自动色阶/对比度算法在图像增强上的应用这两个增强算法都有一定的去雾能力,而最直接的就是< ...

  7. OpenCV—python 视频分析背景提取与前景提取

    文章目录 一.算法 二.代码 MOG2(Mixture of Gaussian) 与 KNN对比 Kmeans 行人检测代码 OpenCV中支持的两种背景提取算法都是 基于模型密度评估,然后在 像素级 ...

  8. python读取一张图片未响应_opencv python 图片读取与显示图片窗口未响应问题的解决...

    显示图像是 Opencv最基本的操作之一, imshow()函数可以实现该操作.如果使用过其他GUI框架背景,就会很自然地调用 imshow来显示一幅图像.但这个观点并不完全正确,因为图像确实会显示出 ...

  9. 使用Python,OpenCV在视频中进行实时条形码检测

    使用Python,OpenCV在视频中进行实时条形码检测 1. 步骤 2. 适用场景及优化 3. 总结 4. 源码 参考 上一篇博客介绍了如何检测和查找图像中的条形码.这篇博客将进行一些优化以检测实时 ...

最新文章

  1. IT人面试必看!25个雷区和11个必问句!
  2. 使用Latex排版一篇IEEE文章
  3. 图像处理之log---log算子
  4. C++4种类型转换操作符
  5. 【开学季限时免费】下载19880元大数据开发全链路教程(视频+源码)
  6. 拒绝无脑吹!从ACL20看预训练缺陷
  7. Dockerfile构建python 运行项目运行环境
  8. matlab中instr,MATLAB 串口通信
  9. pycharm无法导入Pillow
  10. mysql基本表管理sql语句
  11. python模型训练框架_Pytorch-Transformers 1.0发布,支持六个预训练框架,含27个预训练模型...
  12. 数据结构之一元多项式
  13. 推荐一款专家级网站流量分析软件-逆火(Nihuo)
  14. sudo rosdep init 失败的解决方法(适用于非自身设备网络、证书等故障的情况)
  15. 华为云文件夹服务器,华为云文件夹服务器
  16. [附源码]Java计算机毕业设计SSM高铁乘坐舒适性在线调查及评价系统
  17. GCF(4)----手机认证相关知识
  18. 模态分析中的阶数理解
  19. python时间戳是什么意思_Python-时间戳
  20. 猿创征文|《Java》关键字大全-小结

热门文章

  1. 如何创建链接的服务器
  2. 面试官系统精讲Java源码及大厂真题 - 37 ThreadPoolExecutor 源码解析
  3. Flowable工作流入门
  4. BGP——权重选路(讲解+配置命令)
  5. 常用公共前端CDN库
  6. “Abp.AbpBootstrapper – System.MissingMethodException: Method not found: Void Abp.Configuration.Setti
  7. C#LeetCode刷题之#20-有效的括号(Valid Parentheses)
  8. C#算法设计排序篇之01-冒泡排序(附带动画演示程序)
  9. 如何持之以恒做好一件事?
  10. react领域里面jsx中的style的值为什么放到了{}中