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

 更新时间:2013年12月23日 11:21:09   作者:  
python视频高速传输程序,大家参考使用吧

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!(右边的终端)


相关文章

  • Pytorch之finetune使用详解

    Pytorch之finetune使用详解

    今天小编就为大家分享一篇Pytorch之finetune使用详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • Python实现FTP文件定时自动下载的步骤

    Python实现FTP文件定时自动下载的步骤

    这篇文章主要介绍了Python实现FTP文件定时自动下载的示例,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-12-12
  • Python实现老照片修复之上色小技巧

    Python实现老照片修复之上色小技巧

    你会黑白照片上色吗,今天小编带你用python来给黑白照片上个色,这里我们借助百度AI开放平台的“黑白图像上色”接口,仅需二十行代码即可实现,感兴趣的朋友来看看吧
    2021-10-10
  • Numpy ndarray 多维数组对象的使用

    Numpy ndarray 多维数组对象的使用

    这篇文章主要介绍了Numpy ndarray 多维数组对象的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • python中gevent库的用法详情

    python中gevent库的用法详情

    这篇文章主要介绍了python中gevent库的用法详情,Greenlet全部运行在主程序操作系统的过程中,但是它们是协作调度的,文章围绕主题展开详细的内容介绍,具有一定的参考价值
    2022-07-07
  • python中dir()与__dict__属性的区别浅析

    python中dir()与__dict__属性的区别浅析

    这篇文章主要给大家介绍了关于python中dir()与__dict__属性的区别的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-12-12
  • 已解决不小心卸载pip后怎么处理(重新安装pip的两种方式)

    已解决不小心卸载pip后怎么处理(重新安装pip的两种方式)

    这篇文章主要介绍了已解决不小心卸载pip后怎么处理(重新安装pip的两种方式),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • python-docx如何缩进两个字符

    python-docx如何缩进两个字符

    笔者遇到这样的需求要求正文内容每段首行顶两格,也就是向右缩进两个字符,怎么操作呢?下面小编给大家带来了python-docx的缩进问题——如何缩进两个字符,需要的朋友可以参考下
    2022-11-11
  • 如何基于python实现脚本加密

    如何基于python实现脚本加密

    这篇文章主要介绍了如何基于python实现脚本加密,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • 基于TensorFlow常量、序列以及随机值生成实例

    基于TensorFlow常量、序列以及随机值生成实例

    今天小编就为大家分享一篇基于TensorFlow常量、序列以及随机值生成实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01

最新评论