博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
写字机器人开发之:python opencv linux下合作操作摄像头
阅读量:6851 次
发布时间:2019-06-26

本文共 2682 字,大约阅读时间需要 8 分钟。

hot3.png

设想

之前使用C#控制摄像头的,现在厌烦了windows,决定转移到linux下玩耍。感觉能够python语言特有的好入手,正好替代C#,选择了deepin2014.3作为试验平台。现在的设想是第一步实现在自己电脑上对视频的采集,第二步实现视频传输。慢慢来吧。本文大致思路如下:

  • 安装手机ipcam软件
  • 安装opencv
  • 在opencv里用python读取摄像头内容

安装手机ipcam软件

好多人家里面都有废弃的一些安卓手机,我就是其中一位。网上搜索到****的一个作品:,成功安装在老安卓手机上。

看着提示,在同一局域网下,电脑firefox访问软件提供的地址:,输入账号密码均为admin

更多详细内容见:

安装opencv 3.X

前车之鉴,安装opencv需要ffmpeg和gstream之类的。想要使用Python,还需要安装Python,一般Deepin Linux默认安装了Python,包括2.7和3.4版本等,看具体情况。这里跳过Python的安装。

安装ffmpeg

sudo apt-get install ffmpeg

安装gstreamer

由于不知道具体需要那些gstreamer版本,就把他们都安装了。

sudo apt-get install gstreamer1.0*

按教程安装 opencv 3.X版本

准备好这两个软件,下面是安装opencv了,面临寻求帮助的方法问题:一是先百度,一是从软件自身网站找。先百度的(谷歌打不开网页,没办法),网上好多人的博客重复来重复去,很多都是老版本的,不适合最新版本不说,还有很多错误,描述不清楚的,偷工减料的描述,太不负责任了,生怕别人看懂。从软件自身的网站找,一步一步的介绍先安装所需软件。虽然这个网页也是百度linux opencv install出来的。这就完成了安装,教训是先到相关版本说明书上找,不要急着看别人的博客。

参考网页:

使用说明略,只记载命令。详细内容见上面参考网页。

sudo apt-get install build-essentialsudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-devsudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-devcd ~/
git clone https://github.com/Itseez/opencv.gitcd ~/opencvmkdir buildcd buildcmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..makesudo make install

python操作摄像头

下面是opencv跟python的配合了,这个可以说再次遇到了寻求帮助的方法问题。一是百度,二是看软件自带帮助。百度了很多opencv python的博客,都不适合。后来无奈中发现opencv安装文件夹里有sample/×××(各种语言下的示例)。试着运行,竟然都可以运行了。加上曾经有点python的基础,先学学这些示例代码,然后继续往下进行。

其实用必应搜索英文的资料也不错,谷歌用不了,尝试百度和必应搜索。

参考网页:

  • 还有大量网页,不再列举

打开*./opencv/samples/python2文件夹,新建一个ipcam.py*文件,

输入如下内容:

#!/usr/bin/env python'''Usage:------    ipcam.pyKeys:-----    ESC   - exit'''# Python 2/3 compatibilityfrom __future__ import print_functionimport sysPY3 = sys.version_info[0] == 3if PY3:    xrange = rangeimport cv2import urllib import numpy as npprint(__doc__)stream=urllib.urlopen('http://admin:admin@192.168.1.104:8081/video')bytes=''while True:    bytes+=stream.read(16384)    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:]        i = cv2.imdecode(np.fromstring(jpg, dtype=np.uint8), cv2.IMREAD_COLOR)        cv2.imshow('i',i)        if cv2.waitKey(1) ==27:            exit(0)

程序说明:

  • stream=urllib.urlopen('') 其中格式为'http://<username>:<password>@<ipaddress>:<port>/video'。 这个video为查看网页源码 <img id="imgvideo" class="img-thumbnail" src="/video" />得出来。
  • i = cv2.imdecode(np.fromstring(jpg, dtype=np.uint8), cv2.IMREAD_COLOR) 其中cv2.IMREAD_COLOR是试出来的,原文的cv2.CV_LOAD_IMAGE_COLOR经百度,发现不合适,后来改为1,又改为cv2.IMREAD_COLOR的,百度可以查看他们对应的数值。

用法

/ipcam.py

则可以看出照片啦。

问题:

转载于:https://my.oschina.net/bubifengyun/blog/540053

你可能感兴趣的文章
【递推】hdu5927 Auxiliary Set
查看>>
计算机的组成与操作系统
查看>>
包冲突getJspApplicationContext
查看>>
Webrtc入门——基于阿里云ubuntu 最新webrtc Android平台编译详细说明
查看>>
prepareCall方法执行存储过程
查看>>
深入学习jQuery节点关系
查看>>
在浏览器中输入网址后的流程
查看>>
鼠标移动效果
查看>>
源码-hadoop1.1.0-core-org.apache.hadoop.classification
查看>>
创建4个线程,两个对j加一,两个对j减一(j两同两内)
查看>>
Make body have 100% of the browser height
查看>>
linux 服务器安装php5.6
查看>>
python 函数,闭包
查看>>
组合数据类型练习,英文词频统计实例上
查看>>
CentOS开启FTP及配置用户
查看>>
[LeetCode] Remove Duplicates from Sorted Array II
查看>>
【深度学习笔记1】如何建立和确定模型正确性?如何优化模型?
查看>>
Collection集合家族
查看>>
RtlWerpReportException failed with status code :-1073741823
查看>>
5-2 类型转换 @SuppressWarnings("unchecked")
查看>>