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编写一个简单的FUSE文件系统的教程
Apr 02 Python
python实现各进制转换的总结大全
Jun 18 Python
Python中的错误和异常处理简单操作示例【try-except用法】
Jul 25 Python
Python基于identicon库创建类似Github上用的头像功能
Sep 25 Python
Python 实现简单的shell sed替换功能(实例讲解)
Sep 29 Python
对numpy中数组元素的统一赋值实例
Apr 04 Python
解决python 无法加载downsample模型的问题
Oct 25 Python
python tornado使用流生成图片的例子
Nov 18 Python
Python生态圈图像格式转换问题(推荐)
Dec 02 Python
Python中的面向接口编程示例详解
Jan 17 Python
Python+Appium新手教程
Apr 17 Python
基于Python实现一个春节倒计时脚本
Jan 22 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
上海地方志办公室-上海电子仪表工业志
2021/03/04 无线电
PHP 单引号与双引号的区别
2009/11/24 PHP
ThinkPHP模板循环输出Volist标签用法实例详解
2016/03/23 PHP
Bootstrap~多级导航(级联导航)的实现效果【附代码】
2016/03/08 Javascript
AngularJS控制器详解及示例代码
2016/08/16 Javascript
js实现添加可信站点、修改activex安全设置,禁用弹出窗口阻止程序
2016/08/17 Javascript
微信小程序 中wx.chooseAddress(OBJECT)实例详解
2017/03/31 Javascript
node.js中cluster的使用教程
2017/06/09 Javascript
Vue Spa切换页面时更改标题的实例代码
2017/07/15 Javascript
微信小程序实现评论功能
2018/11/28 Javascript
layui动态渲染生成左侧3级菜单的方法(根据后台返回数据)
2019/09/23 Javascript
vue多个元素的样式选择器问题
2019/11/29 Javascript
[44:21]Ti4 循环赛第四日 附加赛NEWBEE vs LGD
2014/07/13 DOTA
[16:19]教你分分钟做大人——风暴之灵
2015/03/11 DOTA
[40:03]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#1EHOME VS Archon
2016/03/02 DOTA
Python Nose框架编写测试用例方法
2017/10/26 Python
Python处理文本换行符实例代码
2018/02/03 Python
Python爬虫框架scrapy实现的文件下载功能示例
2018/08/04 Python
详解PyCharm配置Anaconda的艰难心路历程
2018/08/13 Python
使用Python轻松完成垃圾分类(基于图像识别)
2019/07/09 Python
Python 实现大整数乘法算法的示例代码
2019/09/17 Python
Django 拼接两个queryset 或是两个不可以相加的对象实例
2020/03/28 Python
Python 给下载文件显示进度条和下载时间的实现
2020/04/02 Python
keras 回调函数Callbacks 断点ModelCheckpoint教程
2020/06/18 Python
html5实现canvas阴影效果示例
2014/05/07 HTML / CSS
详解html2canvas截图不能截取圆角图片的解决方案
2018/01/30 HTML / CSS
英国领先的葡萄酒专家:Majestic Wine
2017/05/30 全球购物
写自荐信要注意什么
2013/12/26 职场文书
运动会稿件300字
2014/02/14 职场文书
2014年五四青年节演讲比赛方案
2014/04/22 职场文书
没有孩子的离婚协议书怎么写
2014/09/17 职场文书
新员工考核评语
2014/12/31 职场文书
nginx限制并发连接请求数的方法
2021/04/01 Servers
如何用python反转图片,视频
2021/04/24 Python
详解MySQL集群搭建
2021/05/26 MySQL
详解Nginx 被动检查服务器的存活状态
2021/10/16 Servers