基于python 的电子防抖01 ——使用opencv和vidstab
python vidstab库
在csdn上搜索python稳像和EIS或者视频防抖
只有c++ 的资料
很少公开的代码
开启防抖前
开启防抖后
运行此代码前需要安装visdstab库
pip install vidstab -i https://pypi.tuna.tsinghua.edu.cn/simple
我基于官方文档的例子针对自己的情况修改了部分代码并且增加了去除黑边的功能
目前不是很完善
以后又改进会放出链接
默认3秒后开始裁切,需要可以修改
如果时间太短会造成无数据输入报错
此代码是出于初步状态
默认有20fps的延迟,smoothing_windows可以修改
默认膨胀内核大小3
python代码:
import cv2
from vidstab import VidStab, layer_blend
import numpy as np
import timestabilizer = VidStab()
cap = cv2.VideoCapture(0, cv2.CAP_DSHOW)
kernel = np.ones((3, 3), np.uint8)
t1 = time.time()
#cap.set(3, 1280) # width=1920
#cap.set(4, 720) # height=1080while True:x1_, y1_, x2_, y2_ = [], [], [], []ret, frame = cap.read()if not ret:break#frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)stabilized_frame = stabilizer.stabilize_frame(input_frame=frame,layer_func=layer_blend,border_size=100,border_type='black',smoothing_window=20)if stabilized_frame is None:breakt2 = time.time()if t2 - t1 > 3:stabilized_copy = stabilized_frame.copy()#stabilized_copy = cv2.resize(stabilized_copy, (640, 320) interpolation=cv2.INTER_AREA)stabilized_copy = cv2.cvtColor(stabilized_copy, cv2.COLOR_BGR2GRAY)_, stabilized_copy = cv2.threshold(stabilized_copy, 29, 255, cv2.THRESH_BINARY)stabilized_copy = cv2.morphologyEx(stabilized_copy, cv2.MORPH_CLOSE, kernel)contours, hierarchy = cv2.findContours(stabilized_copy, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)if len(contours) > 0:for i in range(len(contours)):x, y, w, h = cv2.boundingRect(stabilized_copy)x1_.append(x)y1_.append(y)x2_.append(x + w)y2_.append(y + h)x1 = min(x1_)y1 = min(y1_)x2 = max(x2_)y2 = max(y2_)#cv2.rectangle(stabilized_frame, (x1, y1), (x2, y2), (0, 255, 0), 3)stabilized_frame = stabilized_frame[y1 + 40:y2 - 40, x1 + 40:x2 - 40, :]cv2.imshow('Stabilized Frame', stabilized_frame)key = cv2.waitKey(1)if key == 27:break
cap.release()
cv2.destroyAllWindows()
无注释
评论区交流
特别需要注释我会留意
基于python 的电子防抖01 ——使用opencv和vidstab相关推荐
- 基于python的在线考试系统-基于 Python 的电子教室和在线考试系统源代码
Python 是近年倍受推崇的语言,这里介绍的是两个与教学相关的开源项目.一个是用于计算机教室管理的电子教室系统,第二个是与之关联的在线考试系统,当然,这个系统也可以单列出来.这两个项目还只是个雏形, ...
- 基于Python的电子教室软件中远程关机功能的原理与实现
为更好地保证教学质量和提高学生的学习积极性,我使用Python开发了一套课堂教学管理系统,具有在线点名.在线答疑.随机提问.在线作业管理.在线自测.在线考试.数据汇总.试卷生成.屏幕广播等功能,前几天 ...
- Python监视电子邮箱并提示收到新邮件
代码功能:程序运行后,提示输入电子邮箱账号和密码,然后模拟登录.获取最新邮件ID.退出的操作,如果有新邮件则进行提示. 参考代码: ----------喜大普奔---------- 1.董付国老师Py ...
- python是商业组织吗_基于Python的电子商务系统的弹性架构与思考
DOI:10. 19392 / j. cnki. 1671-7341. 201815075 基于 Python 的电子商务系统的弹性架构与思考 谢钟扬 湖南软件职业学院 湖南湘潭 411100 摘 要 ...
- 基于python+OpenCV的车牌号码识别
基于python+OpenCV的车牌号码识别 车牌识别行业已具备一定的市场规模,在电子警察.公路卡口.停车场.商业管理.汽修服务等领域已取得了部分应用.一个典型的车辆牌照识别系统一般包括以下4个部分: ...
- OpenCV基于Python霍夫圆检测—基于梯度的霍夫圆检测
基于梯度的霍夫圆检测 1. 回顾与目标 2. 基于梯度的霍夫圆检测 2.1 问题分析 2.2 基于梯度的霍夫圆检测步骤 3. 基于梯度的霍夫圆检测函数HoughCircles 3.1 函数HoughC ...
- OpenCV基于Python霍夫圆检测—标准霍夫圆检测
标准霍夫圆检测 1. 简介 2. 标准霍夫圆检测 2.1 情形一 2.2 情形二 2.3 情形三 3. 程序演示 4. 结尾 参考资料 1. 简介 1972年,R. D. Duda和P. E. Har ...
- 【CV】OpenCV(基于Python)学习笔记
以下内容中的页码均来自<OpenCV 4详解 : 基于Python> 目录 第2章 载入.显示与保存数据 2.2 图像的读取与显示 2.2.1 图像读取函数 cv.imread() 2.2 ...
- ubuntu16.04安装python.h_ubuntu16.04 下基于 Python 的 OpenCV 的安装
ubuntu16.04 下基于 Python 的 OpenCV 的安装 这几天一直在学习基于 Python 的 OpenCV , 开发环境是在 Ubuntu16.04 下, 学习的心得就是基于 Pyt ...
最新文章
- 秦州:西瓜书 + 南瓜书 吃瓜系列 13. 降维与度量学习(上)
- 系统服务及shell编程
- 汇编语言 将a段和b段中的数据依次相加,结果存放在c段中
- 的训练过程_指外翻的人在训练的过程中,要不要拉伸收肌?
- 资源下载| 深度学习Pytoch1.0如何玩?这一门含900页ppt和代码实例的深度学习课程带你飞
- 9月26日云栖精选夜读:阿里Java代码规约插件即将全球首发,邀您来发布仪式现场...
- Linux下ps命令详解
- symfony ajax,如何在php或symfony中使用jQuery ajax上传文件
- linux 空闲物理内存 很少,linux系统free查看内存,发现可用物理内存很少,但是查看进程却发现没进程占用大内存...
- 第 14 篇:交流的桥梁“评论功能”——HelloDjango 系列教程
- java 静态相关内容
- 2019APMCM亚太数学建模题目
- lan口配置 petalinux_【Xilinx-Petalinux学习】-02-建立PetaLinux工程
- CLion程序编译错误 0xC0000135
- 音频处理-2 WAV格式
- 嵌入式pcb打造超薄降压模块让14500锂电池直接替代5号电池
- greedy算法策略高效求解分数背包问题
- 面试通过了,也给了Offer,不去有什么后果?
- Google 镜像站IP地址
- Problem D 筛法求素数
热门文章
- 磁盘的读写原理及计算
- 用计算机画画教学设计,《认识画图软件》教学设计
- Win10/Ubuntu20.04编译ros2_documentation-foxy过程
- Gauss Quadrature数值求积基础与R语言实践
- Redis bitmap、hyperlog、布隆过滤器、RoaringBitmap原理应用场景与日活的统计的具体应用
- 【开源电机驱动】电流数据处理与分析
- orm 对象关系映射
- 欧洲十大电动摩托车市场-Part two
- GEEK另类玩法 用电磁炮测浏览器速度
- VBA提高篇35 VBA操作Word/PPT/Access_CreateObject/GetObject