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 相关文章推荐
使用httplib模块来制作Python下HTTP客户端的方法
Jun 19 Python
python3 requests中使用ip代理池随机生成ip的实例
May 07 Python
Python实现iOS自动化打包详解步骤
Oct 03 Python
Python使用requests提交HTTP表单的方法
Dec 26 Python
python之拟合的实现
Jul 19 Python
Python数学形态学实例分析
Sep 06 Python
Pandas聚合运算和分组运算的实现示例
Oct 17 Python
Ranorex通过Python将报告发送到邮箱的方法
Jan 12 Python
使用Python操作ArangoDB的方法步骤
Feb 02 Python
tensorflow实现读取模型中保存的值 tf.train.NewCheckpointReader
Feb 10 Python
Python多线程通信queue队列用法实例分析
Mar 24 Python
Python读取多列数据以及用matplotlib制作图表方法实例
Sep 23 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
php实现按文件名搜索文件的远程文件查找器
2014/05/10 PHP
Swoole源码中如何查询Websocket的连接问题详解
2020/08/30 PHP
Javascript代码混淆综合解决方案-Javascript在线混淆器
2006/12/18 Javascript
JavaScript flash复制库类 Zero Clipboard
2011/01/17 Javascript
仿新浪微博登陆邮箱提示效果的js代码
2013/08/02 Javascript
浅析js中2个等号与3个等号的区别
2013/08/06 Javascript
JS禁用页面上所有控件的实现方法(附demo源码下载)
2015/12/17 Javascript
Jquery Easyui对话框组件Dialog使用详解(14)
2016/12/19 Javascript
VUE使用vuex解决模块间传值问题的方法
2017/06/01 Javascript
全面解析Node.js 8 重要功能和修复
2017/06/02 Javascript
Vue.js实现输入框绑定的实例代码
2017/08/24 Javascript
javascript 作用于作用域链的详解
2017/09/27 Javascript
JS 仿支付宝input文本输入框放大组件的实例
2017/11/14 Javascript
js中document.write和document.writeln的区别
2018/03/11 Javascript
vue style width a href动态拼接问题的解决
2020/08/07 Javascript
Python模拟登录验证码(代码简单)
2016/02/06 Python
利用Python循环(包括while&for)各种打印九九乘法表的实例
2017/11/06 Python
Python cookbook(数据结构与算法)字典相关计算问题示例
2018/02/18 Python
pygame游戏之旅 如何制作游戏障碍
2018/11/20 Python
python实现简单颜色识别程序
2020/02/19 Python
python实现从ftp服务器下载文件
2020/03/03 Python
python实现图像全景拼接
2020/03/27 Python
python 实现Requests发送带cookies的请求
2021/02/08 Python
Ariat官网:美国马靴和服装品牌
2019/12/16 全球购物
销售主管的自我评价分享
2014/01/03 职场文书
司马光教学反思
2014/02/01 职场文书
初三学生评语大全
2014/04/24 职场文书
中华美德颂演讲稿
2014/05/20 职场文书
大学新闻系求职信
2014/06/03 职场文书
实习生矿工检讨书
2014/10/13 职场文书
2014年度个人工作总结范文
2015/03/09 职场文书
2015年生活老师工作总结
2015/05/27 职场文书
趣味运动会简讯
2015/07/20 职场文书
员工担保书范本
2015/09/22 职场文书
mysql部分操作
2021/04/05 MySQL
【DOTA2】高能暴走TK秀!PSG LGD vs ASTER - DPC 2022 WINTER TOUR CN
2022/04/02 DOTA