videocapture库制作python视频高速传输程序


Posted in Python onDecember 23, 2013

1,首先是视频数据[摄像头图像]的采集,通常可以使用vfw在vc或者vb下实现,这个库我用的不好,所以一直不怎么会用.现在我们用到的是python的videocapture库,这个库用起来很简单,如下:

from VideoCapture import Device
cam = Device()
cam.setResolution(320,240)   #设置显示分辨率
cam.saveSnapshot('demo.jpg') #抓取并保存图片

这样,你就得到了一张图片.
当然,要实现比较高速的采集,每次都要保存图片是不大可能的,这样弄下来每次采集一张图片已经接近1秒钟,这个速度我们是无法忍受的.
更好的解决方式是直接这样: im = cam.getImage(),返回的是一个Image对象,是一个内存块,对它操作就快速多了.
2,如何传输图片?我不知道pplive这种视频是怎么传输的,我的想法很简单,每次传送一幅图片.
在本程序中,每次传送的RGB图像的大小为 160*120.这样,需要的数据量为:d = 160*120*3 = 56.25 kB
我选择80000B.
下面是发送端代码:

import socket
import Image
from VideoCapture import Device
cam = Device()
cam.setResolution(320,240)
clisocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
while 1:
    im = cam.getImage()
    im = im.resize((160,120))
    da = im.tostring()
    clisocket.sendto(da, ("127.0.0.1", 1234))
s.close()

3,如何实时显示图片?
我使用了pygame作为实时图像显示界面,因为pygame是经过优化的高速图形库,不知道有没有使用directshow,我想应该用了吧..
关于pygame请参考 www.pygame.org
下面是接收端代码:

import socket
import Image
import os,sys,pygame
from pygame.locals import *
pygame.init()
screen = pygame.display.set_mode((160,120))
pygame.display.set_caption("web cam")
pygame.display.flip()
svrsocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
svrsocket.bind(("127.0.0.1", 1234))
clock = pygame.time.Clock()    #计算帧速
while 1:
    data, address = svrsocket.recvfrom(80000)
    camshot = pygame.image.frombuffer(data, (160,120), "RGB")
    for event in pygame.event.get():
            if event.type == pygame.QUIT: sys.exit()
    screen.blit(camshot, (0,0))
    pygame.display.update() 
    print clock.get_fps()     #在终端打印帧速
    clock.tick()

程序终于完成了,测试一下效果怎么样把,为了方便,我把客户端和服务端都设成了本机,端口为1234.
运行程序,哇,简直不可思议,最高竟然达到230fps!(右边的终端)

videocapture库制作python视频高速传输程序

Python 相关文章推荐
简单介绍Python中的JSON使用
Apr 28 Python
Python使用matplotlib绘制动画的方法
May 20 Python
Python文件右键找不到IDLE打开项解决办法
Jun 08 Python
Python中数字以及算数运算符的相关使用
Oct 12 Python
Unicode和Python的中文处理
Mar 19 Python
TensorFlow实现AutoEncoder自编码器
Mar 09 Python
解决python3 Pycharm上连接数据库时报错的问题
Dec 03 Python
Python用Try语句捕获异常的实例方法
Jun 26 Python
django-初始配置(纯手写)详解
Jul 30 Python
pytorch方法测试详解——归一化(BatchNorm2d)
Jan 15 Python
python3 循环读取excel文件并写入json操作
Jul 14 Python
Django实现drf搜索过滤和排序过滤
Jun 21 Python
天翼开放平台免费短信验证码接口使用实例
Dec 18 #Python
python模拟登录百度贴吧(百度贴吧登录)实例
Dec 18 #Python
python抓取京东商城手机列表url实例代码
Dec 18 #Python
python获取糗百图片代码实例
Dec 18 #Python
python算法学习之计数排序实例
Dec 18 #Python
python算法学习之基数排序实例
Dec 18 #Python
python算法学习之桶排序算法实例(分块排序)
Dec 18 #Python
You might like
一些操作和快捷键的理解和讨论
2020/03/04 星际争霸
星际争霸 Starcraft 秘技补丁
2020/03/14 星际争霸
PHP中的加密功能
2006/10/09 PHP
PHP多线程抓取网页实现代码
2010/07/22 PHP
ThinkPHP中RBAC类的四种用法分析
2014/11/24 PHP
如何获取JQUERY AJAX返回的JSON结果集实现代码
2012/12/10 Javascript
深入解析JavaScript中的数字对象与字符串对象
2015/10/21 Javascript
jQuery进行组件开发完整实例
2015/12/15 Javascript
JS拖拽组件学习使用
2016/01/19 Javascript
Node.js查找当前目录下文件夹实例代码
2017/03/07 Javascript
详解在express站点中使用ejs模板引擎
2017/09/21 Javascript
原生JS实现 MUI导航栏透明渐变效果
2017/11/07 Javascript
Parcel 打包示例(React HelloWorld)
2018/01/16 Javascript
Vue脚手架的简单使用实例
2018/07/10 Javascript
Vue axios设置访问基础路径方法
2018/09/19 Javascript
Vue 组件参数校验与非props特性的方法
2019/02/12 Javascript
从0到1构建vueSSR项目之node以及vue-cli3的配置
2019/03/07 Javascript
微信小程序实现用table显示数据库反馈的多条数据功能示例
2019/05/07 Javascript
Vue 实现登录界面验证码功能
2020/01/03 Javascript
JS函数进阶之继承用法实例分析
2020/01/15 Javascript
js实现鼠标点击飘爱心效果
2020/08/19 Javascript
windows系统中python使用rar命令压缩多个文件夹示例
2014/05/06 Python
python3实现跳一跳点击跳跃
2018/01/08 Python
python网络编程 使用UDP、TCP协议收发信息详解
2019/08/29 Python
关于Kotlin中SAM转换的那些事
2020/09/15 Python
4款Python 类型检查工具,你选择哪个呢?
2020/10/30 Python
python数据抓取3种方法总结
2021/02/07 Python
CSS3 Pie工具推荐--让IE6-8支持一些优秀的CSS3特性
2014/09/02 HTML / CSS
Alba Moda瑞士网上商店:独家意大利时尚女装销售
2016/11/28 全球购物
美国瑜伽品牌:Gaiam
2017/10/31 全球购物
大学生两会学习心得体会
2014/03/10 职场文书
2014年村官工作总结
2014/11/24 职场文书
研究生论文答辩开场白
2015/05/27 职场文书
未婚证明范本
2015/06/15 职场文书
Java常用函数式接口总结
2021/06/29 Java/Android
MySQL的Query Cache图文详解
2021/07/01 MySQL