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中的True,False条件判断实例分析
Jan 12 Python
PyQt5每天必学之事件与信号
Apr 20 Python
python 剪切移动文件的实现代码
Aug 02 Python
python获取时间及时间格式转换问题实例代码详解
Dec 06 Python
python matplotlib画图库学习绘制常用的图
Mar 19 Python
python使用BeautifulSoup与正则表达式爬取时光网不同地区top100电影并对比
Apr 15 Python
django之自定义软删除Model的方法
Aug 14 Python
基于python调用psutil模块过程解析
Dec 20 Python
Python原始套接字编程实例解析
Jan 29 Python
基于Pytorch SSD模型分析
Feb 18 Python
Opencv python 图片生成视频的方法示例
Nov 18 Python
python解析照片拍摄时间进行图片整理
Jul 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基础教程(php入门基础教程)一些code代码
2013/01/06 PHP
php中Session的生成机制、回收机制和存储机制探究
2014/08/19 PHP
PHP lcfirst()函数定义与用法
2019/03/08 PHP
PHP7新增函数
2021/03/09 PHP
prototype Element学习笔记(Element篇三)
2008/10/26 Javascript
innerhtml用法 innertext用法 以及innerHTML与innertext的区别
2009/10/26 Javascript
关于捕获用户何时点击window.onbeforeunload的取消事件
2011/03/06 Javascript
JavaScript闭包 懂不懂由你反正我是懂了
2011/10/21 Javascript
JS获取后台Cookies值的小例子
2013/03/04 Javascript
百度UEditor编辑器如何关闭抓取远程图片功能
2015/03/03 Javascript
jquery 表单验证之通过 class验证表单不为空
2015/11/02 Javascript
JavaScript简单下拉菜单特效
2016/09/13 Javascript
ES6 Symbol在对象中的作用实例分析
2020/06/06 Javascript
原生js实现无缝轮播图效果
2021/01/28 Javascript
[03:31]DOTA2英雄基础教程 大地之灵
2013/12/17 DOTA
分析在Python中何种情况下需要使用断言
2015/04/01 Python
Python虚拟环境virtualenv的安装与使用详解
2017/05/28 Python
python机器学习之神经网络(二)
2017/12/20 Python
如何在python中使用selenium的示例
2017/12/26 Python
Python操作mongodb数据库进行模糊查询操作示例
2018/06/09 Python
Puppeteer使用示例详解
2019/06/20 Python
关于Python 的简单栅格图像边界提取方法
2019/07/05 Python
python+adb命令实现自动刷视频脚本案例
2020/04/23 Python
一款基于css3的列表toggle特效实例教程
2015/01/04 HTML / CSS
美国知名的百货清仓店:Neiman Marcus Last Call
2016/08/03 全球购物
纪伊国屋新加坡网上书店:Kinokuniya新加坡
2017/12/29 全球购物
Jack Rogers官网:美国经典的女性鞋靴品牌
2019/09/04 全球购物
水产养殖学应届生求职信
2013/09/29 职场文书
《我不是最弱小的》教学反思
2014/02/23 职场文书
挂牌仪式策划方案
2014/05/18 职场文书
绘画专业自荐信
2014/07/04 职场文书
2014市府办领导班子“四风问题”对照检查材料思想汇报
2014/09/24 职场文书
区长工作作风个人整改措施
2014/10/01 职场文书
你对自己的信用报告有过了解吗?
2019/07/09 职场文书
教师学期述职自我鉴定
2019/08/16 职场文书
MySQL实现用逗号进行拼接、以逗号进行分割
2022/12/24 MySQL