案例故事:有一款已经上市的终端产品,偶现异常自动重启的情况,

测试经理要求我们压测并尝试复现,我们的压测方案是:

利用摄像头,每1 ~ 2秒拍一张终端产品运行的图片,拍摄一晚上,

回头一张图片一张图片快速过一遍,看是否出现过了系统启动界面。

许多需要长时间的压测的场景,我们都可以通过摄像头拍照,来记录被测试设备的运行情况,

本篇主要介绍如何通过Python + ffmpeg + 电脑摄像头实现自动化持续拍照功能。

准备阶段

ffmpeg的下载地址及其介绍可参考:ffmpeg - 音视频图像编解码工具

确保ffmpeg.exe已经加入Path环境变量里的某个路径下。

确保摄像头驱动已经Ok,在Windows设备管理器"图像设备"里可以找到这个设备。

Python面向对象形式

由于涉及设备初始化,开始拍照等功能,

更建议直接用面向对象形式来定义这个ffmpeg_capture.py模块。

# coding=utf-8

import os

import time

class FFmpegCapturer(object):

def __init__(self, camera_device="None"):

self.camera_device = camera_device

def start_capture(self, output_file):

command = "ffmpeg -f dshow -i video=\"%s\" -qscale:v 2 -vframes 1 -s 1920x1080 -y %s"%(self.camera_device, output_file)

os.system(command)

if __name__ == "__main__":

CAMERA_DEVICE = "USB " # 常量,自行去Windows设备管理器查看

f_obj = FFmpegCapturer(CAMERA_DEVICE)

for i in range(1000):

print("摄像头正在进行第%s次拍照"%i)

f_obj.start_capture("%s.jpg"%i)

time.sleep(1)

运行效果视频

小提示

(1). 摄像头购买一个USB口支持高清的即可,一般100 - 300元左右一个

(2). 其实笔记本电脑自带的摄像头也可以通过以上方法调用

(3). 设备管理器里显示的设备名称,有时候带有特殊字符,比如以上案例的"USB "居然多了一个空格,

碰到这种情况,可以通过“ffmpeg -list_devices true -f dshow -i dummy”命令准确列出设备名称的文本来。

(4). 以上核心其实就1条命令:

ffmpeg -f dshow -i video="USB " -qscale:v 2 -vframes 1 -s 1920x1080 -y C:\1.jpg

但是通过Python面向对象封装后,可以实现更完美的自动化调用!

python 调用摄像头拍照_《自拍教程67》Python调用摄像头, 拍照拍照!相关推荐

  1. python 功能化模块_【软件测试教程】Python模块化以及内置模块的使用

    一:什么是模块 模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py.模块可以被别的程序引入,以使用该模块中的函数等功能. 二:模块类型 1:自定义模块 由编程人员自己写的模块.自定义模块时要 ...

  2. openpyxl安装_自拍教程76Python 一键批量安装第三方包

    案例故事: 在测试环境搭建环节,尤其是需要在新的电脑上搭建Python测试环境时, 可以考虑把日常自动化测试所需要用到的第三方Python包(非自带内置包), 一次性批量安装上. 准备阶段 1.确保p ...

  3. 根据测试路径自动生成测试用例_自拍教程75Python 根据测试用例选择测试资源

    案例故事:Android手机音视频图片解码播放测试,有将近上千条用例, 包含了不同的音视频图片文件,每条用例都至少对应了一个测试资源文件.整个测试资源仓库,将近100G,一些视频比如High Prof ...

  4. python函数模块化教程_【软件测试教程】Python模块化以及内置模块的使用

    一:什么是模块 模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py.模块可以被别的程序引入,以使用该模块中的函数等功能. 二:模块类型 1:自定义模块 由编程人员自己写的模块.自定义模块时要 ...

  5. python3.7基础教程_关于本教程 |《Python 官方文档:入门教程 3.7.0》| Python 技术论坛...

    本文档最新版为 3.8,旧版本可能放弃维护,推荐阅读最新版! Python 入门教程 Python 是一门简单易学且功能强大的编程语言.它拥有高效的高级数据结构,并能够用简单又有效的方式进行面向对象编 ...

  6. python数据科学入门_干货!小白入门Python数据科学全教程

    前言本文讲解了从零开始学习Python数据科学的全过程,涵盖各种工具和方法 你将会学习到如何使用python做基本的数据分析 你还可以了解机器学习算法的原理和使用 说明 先说一段题外话.我是一名数据工 ...

  7. python运行怎么下一步_简明Python3教程 18.下一步是什么

    如果你有认真通读本书之前的内容并且实践其中包含的大量例程,那么你现在一定可以熟练使用python了. 同时你可能也编写了一些程序用于验证python特性并提高你的python技能.如果还没有这样做的话 ...

  8. cad和python哪个应该学_史上最全Python快速入门教程,满满都是干货

    Python是面向对象,高级语言,解释,动态和多用途编程语言.Python易于学习,而且功能强大,功能多样的脚本语言使其对应用程序开发具有吸引力. Python的语法和动态类型具有其解释性质,使其成为 ...

  9. 什么是python中子类父类_零基础入门:python中子类继承父类的__init__方法实例

    前言: 今天为大家带来的内容是零基础入门:python中子类继承父类的__init__方法实例!具有不错的参考意义,希望在此能够帮助到各位!(喜欢的话记得点赞转发关注不迷路哦) 使用Python写过面 ...

最新文章

  1. python游戏服务器框架_mqant首页、文档和下载 - Golang/python语言开发的分布式游戏服务器框架 - OSCHINA - 中文开源技术交流社区...
  2. Intellij IDEA中使用Protobuf的正确姿势
  3. C# 将DataTable数据源转换成实体类
  4. iPhone拍人像,人头直接不见了,什么情况?
  5. Redis 16 大应用场景,竟然这么多。。
  6. Java中泛型的使用场景
  7. 俄罗斯“指尖旋风”席卷南京
  8. linux命令画圣诞树图片,以 Linux 的方式庆祝圣诞节
  9. 判断本地是否存在Jquery文件,如果不存在则使用CDN加速的Jquery文件
  10. 图解 SpringMVC 五大组件
  11. 前端js获取本项目的项目根地址
  12. sysservers 中找不到服务器,请执行 sp_addlinkedserver 将该服务器添加到sysserver
  13. 【百度之星程序设计大赛】2020年初赛第三场第四题Intersection
  14. 服务器上qq打不开网页,能上qq打不开网页的解决方法
  15. 机器智能正在代替人类做的5件事
  16. 解决Strokeit在win8下的图标问题和开机启动问题
  17. 不小心设置了xml文件中的namespace(xmln)如何取消
  18. 基于Android的健康医疗论坛的设计与开发(android studio)
  19. MPAndroidChart实现曲线阴影效果
  20. npm install下载依赖项时报错 fatal: unable to access ‘https://github.com/nhn/raphael.git/‘: Failed to connect

热门文章

  1. 美甲帮:玩转指甲上的大数据平台
  2. HDU 3397 Sequence operation 线段树 成段更新 区间合并
  3. 如何禁止端口的使用(有空我把步骤图补上)
  4. 将应用程序11M内存占用,降至500K [转]
  5. linux opensuse 集成工具yast 使用方法
  6. linux c 删除 文件 第一行
  7. linux python fcntl模块 程序加锁 简介
  8. linux sort 排序命令简介
  9. ASP.NET前台代码绑定后台变量方法总结
  10. 使用 GetStartupInfo 检查自己是否被调试