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显示生日是星期几的方法
May 27 Python
基于进程内通讯的python聊天室实现方法
Jun 28 Python
Python创建对称矩阵的方法示例【基于numpy模块】
Oct 12 Python
python如何生成各种随机分布图
Aug 27 Python
Python OpenCV 调用摄像头并截图保存功能的实现代码
Jul 02 Python
python 利用浏览器 Cookie 模拟登录的用户访问知乎的方法
Jul 11 Python
Python 200行代码实现一个滑动验证码过程详解
Jul 11 Python
python实现从尾到头打印单链表操作示例
Feb 22 Python
Python连接HDFS实现文件上传下载及Pandas转换文本文件到CSV操作
Jun 06 Python
Python 实现PS滤镜中的径向模糊特效
Dec 03 Python
python Matplotlib基础--如何添加文本和标注
Jan 26 Python
一文读懂python Scrapy爬虫框架
Feb 24 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
防止MySQL注入或HTML表单滥用的PHP程序
2009/01/21 PHP
通过实例解析PHP数据类型转换方法
2020/07/11 PHP
javascript的对话框详解与参数
2007/03/08 Javascript
Javascript 事件流和事件绑定
2009/07/16 Javascript
Javascript select下拉框操作常用方法
2009/11/09 Javascript
JS对外部文件的加载及对IFRMAME的加载的实现,当加载完成后,指定指向方法(方法回调)
2011/07/04 Javascript
JavaScript实现班级随机点名小应用需求的具体分析
2014/05/12 Javascript
浅谈Jquery核心函数
2015/06/18 Javascript
全面解析Bootstrap中tab(选项卡)的使用方法
2016/06/06 Javascript
JavaScript页面实时显示当前时间实例代码
2016/10/23 Javascript
vue2.0移除或更改的一些东西(移除index key)
2017/08/28 Javascript
jquery实现用户登陆界面(示例讲解)
2017/09/06 jQuery
Vue 2.0 侦听器 watch属性代码详解
2019/06/19 Javascript
JS如何调用WebAssembly编译出来的.wasm文件
2020/11/05 Javascript
vuex的数据渲染与修改浅析
2020/11/26 Vue.js
[00:52]DOTA2国际邀请赛
2020/02/21 DOTA
python翻译软件实现代码(使用google api完成)
2013/11/26 Python
python保存字符串到文件的方法
2015/07/01 Python
Python实现代码统计工具
2019/09/19 Python
window7下的python2.7版本和python3.5版本的opencv-python安装过程
2019/10/24 Python
简单了解Python字典copy与赋值的区别
2020/09/16 Python
关于探究python中sys.argv时遇到的问题详解
2021/02/23 Python
CSS3的新特性介绍
2008/10/31 HTML / CSS
英国简约舒适女装品牌:Great Plains
2018/07/27 全球购物
香港万宁官方海外旗舰店:香港健与美连锁店
2018/09/27 全球购物
阿里巴巴美国:Alibaba美国
2019/11/24 全球购物
文秘专业个人求职信
2013/12/22 职场文书
公司成本主管岗位责任制
2014/02/21 职场文书
租赁协议书范本
2014/04/22 职场文书
小班评语大全
2014/05/04 职场文书
文明礼貌演讲稿
2014/05/12 职场文书
学校春季防火方案
2014/06/08 职场文书
小学网上祭英烈活动总结
2014/07/05 职场文书
2015年国庆节寄语
2015/08/17 职场文书
Python Django 后台管理之后台模型属性详解
2021/04/25 Python
mybatis-plus模糊查询指定字段
2022/04/28 Java/Android