利用python-opencv调用mjpg-stream视频流

来源:互联网 发布:淘宝直播在哪 编辑:程序博客网 时间:2024/06/06 03:13

  由于最近在做一个只能设备,需要实时传输视频,并且要调用mjpg-stream视频流进行图像处理。为了研究如何调取这个视频流,小硕就在树莓派上做了这个实验
1.在树莓派安装 编译/运行 Mjpg-Streamer 网络摄像头(电脑在ubuntu下也可以),首先我们需要想办法提取图像安装依赖。

sudo apt-get install libv4l-dev libjpeg-devsudo apt-get install libjpeg62-dev

2.下载代码,并编译

 **git clone https://github.com/jacksonliam/mjpg-streamer    cd ~/mjpg-streamer/mjpg-streamer-experimental    sudo make clean all    git clone https://github.com/jacksonliam/mjpg-streamer    cd ~/mjpg-streamer/mjpg-streamer-experimental    sudo make clean all**

3.然后就可以启动了

多个的时候./mjpg_streamer -i 'input_uvc.so -d /dev/video0' -o 'output_http.so -p 8080 './mjpg_streamer -i 'input_uvc.so -d /dev/video1' -o 'output_http.so -p 8001 -w ./www1'

4.打开浏览器,输入你的IP

http://IP:8080/?action=snapshot

接下来你就可以在浏览器里看到摄像头的内容了。
接下来才是大家比较关心的问题了,如何调取这个mipg-stream流呢?由于小硕需要对采集到的图像做一些处理,于是我采用python-opencv来实现这个project.
至于怎么安装python,opencv等,我在上篇已经提过,我在这里不在赘述了。

import cv2import urllib2import numpy as npimport syshost = "192.168.199.110:8300"#在这里记得修改IP,否则是无法调用的,刚刚浏览器输入的地址if len(sys.argv)>1:    host = sys.argv[1]hoststr = 'http://' + host + '/?action=stream'print 'Streaming ' + hoststrprint 'Print Esc to quit'stream=urllib2.urlopen(hoststr)bytes=''while True:    bytes+=stream.read(1024)    a = bytes.find('\xff\xd8')    b = bytes.find('\xff\xd9')    if a!=-1 and b!=-1:        jpg = bytes[a:b+2]        bytes= bytes[b+2:]        #flags = 1 for color image        i = cv2.imdecode(np.fromstring(jpg, dtype=np.uint8),flags=1)       # print i.shape        cv2.imshow("xiaorun",i)        if cv2.waitKey(1) & 0xFF == ord('q'):            exit(0)

这样我们就可以利用opencv调用了远程摄像头了,方法简单实用,各位可以自行参考,如果有问题欢迎大家提问,小编邮箱1039463596@qq.com

原创粉丝点击