好久没有更新了,今天更一篇最近遇到的问题,及解决办法,后面博客得继续写起来

安装

#使用Python下的lib库直接进行安装
apt-get install python-opencv

测试

#使用如下代码进行测试,以下代码是拍照,在按q之后,保存图片并退出。

import cv2

cap = cv2.VideoCapture(0)
while(1):
# get a frame
ret, frame = cap.read()
# show a frame
cv2.imshow("capture", frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
cv2.imwrite("./test.jpeg", frame)
break
cap.release()
cv2.destroyAllWindows()

至此代表安装基本没有问题,可以进行下一步开发

开发

通过在上述的测试代码添加配置摄像头的参数

#设置摄像头的像素
cap.set(cv2.cv.CV_CAP_PROP_FRAME_WIDTH,3264)
cap.set(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT,2448)
#设置摄像头的帧率
cap.set(cv2.cv.CV_CAP_PROP_FPS,5)

本以为万事大吉可以收工了,一运行发现了个巨大的问题

错误如下提示

 libv4l2: error converting / decoding frame data: v4l-convert: error
destination buffer too small (16777216 < 23970816)
VIDIOC_DQBUF: Bad address

看提示是因为自己想用到高清的,可是libv412库不支持,导致buffer不够大,产生的错误,通过libv4l2: error converting / decoding frame data: v4l-convert: error destination buffer too small 解决问题,下面说一下解决步骤

  • 找到libv4l2的源码github
  • 更改源码路径下的lib/libv4l2/libv4l2-priv.h文件中的如下代码
//The change was
#define V4L2_FRAME_BUF_SIZE (4096 * 4096)
//to
#define V4L2_FRAME_BUF_SIZE (2 * 4096 * 4096)
  • 首先卸载系统之前的这个库文件
sudo apt-get remove libv4l-dev
  • 编译安装刚改更改过的库
#源码目录下先进行configure,这个中间貌似由于没有安装autoconf之类的东西,也报过错,出现错误后大家Google一下就能找到答案,都是些容易解决的问题
autoreconf -vfi
make
make install

这样库文件就重新安装了,测试一下,高清的摄像头也可以用了。

同时开多个摄像头

本以为万事大吉了,万万没想到又出幺蛾子了,同时打开三个摄像头的时候又报错了如下:

libv4l2: error turning on stream: No space left on device

一下就嗨皮了,查了一下貌似说是usb带宽不够用了,经过找资料找到下面的解决办法

sudo rmmod uvcvideo
#下面这个128可以更改最好改大点,如果用的是高清摄像头
sudo modprobe uvcvideo quirks=128

如果更改有效,可以用下面的方法进行配置,这样就不用每次都改了

sudo vi /etc/modprobe.d/uvcvideo.conf
options uvcvideo quirks=128

ok终于可以顺利运行了,上面的应用大家就可以根据自己的需要随便改了。

ubuntu下安装opencv库+Python2.7环境安装及开发摄像头拍照应用的更多相关文章

  1. 如何生成能在没有安装opencv库及vs2010环境的电脑上运行的exe文件

    项目基本算法已经完成,甲方需要一个可以运行的demo.目前,程序能在自己的电脑上正常运行.移植到其他win7系统上,运行失败. 寻找各种解决办法,baidu找到两个办法: 1.使用静态链接的方法,这种 ...

  2. Ubuntu 17.04版本下,opencv进行源码编译安装

    本文主要针对Ubuntu 17.04版本下,opencv进行源码编译安装.开发环境主要针对python 对 openCV库的调用. 安装 gcc cmake 编译环境 sudo apt-get ins ...

  3. Win7下Python2.7环境安装paramiko模块

    Win7下Python2.7环境安装paramiko模块,经过安装并测试成功,整理文档如下: 1.下载安装Windows版本的Python2.7,我默认装在C:\Python27 我的python已经 ...

  4. 【视频开发】【计算机视觉】doppia编译之三:编译安装opencv库

    这里我介绍2种方法 (1)利用别人写好的脚本编译,相对来说省力一点  上Github下载别人写好的脚本文件,网址 https://github.com/jayrambhia/Install-OpenC ...

  5. Ubuntu杂记——Ubuntu下Eclipse搭建Maven、SVN环境

    正在实习的公司项目是使用Maven+SVN管理的,所以转到Ubuntu下也要靠自己搭环境,自己动手,丰衣足食.步骤有点简略,但还是能理解的. 一.安装JDK7 打开终端(Ctrl+Alt+T),输入  ...

  6. 在Ubuntu下编译Assimp库

    在Ubuntu下编译Assimp库 怎样在Ubuntu下编译Assimp库?这是我曾经编译成功后做的笔记,供參考. 1.去以下的站点去下载Assimp库: http://assimp.sourcefo ...

  7. ubuntu 下搭建apache+python的运行环境

    ubuntu下怎么搭建apache+python运行环境,可以参考http://www.01happy.com/ubuntu-apache-mod-python/ ,这里只是简单的记录下步骤,本文主要 ...

  8. Ubuntu下搭建Hyperledger Fabric v1.0环境

      多次尝试才正常启动了Fabric,如遇到各种莫名错误,请参考如下一步步严格安装,特别用户权限需要注意. 一.安装Ubuntu16 虚拟机或双系统,虚拟机有VirtualBox或者VMware,Ub ...

  9. Python如何安装OpenCV库

    转载:https://blog.csdn.net/weixin_35684521/article/details/81953047 OpenCV的概念可百度,在此不再赘述.https://baike. ...

随机推荐

  1. 【转载】Static 关键字的作用

    原始日期:2016-07-16 17:53   一   普通的static关键字 1.  静态全局变量 在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量.我们先举一个静态全局变 ...

  2. windows端口占用处理工具

    一.描述 笔者在最近使用tomcat时,老是会遇到这种端口占用的问题,便写了这个小的exe,用于解决windows下的端口占用问题. 好吧,其实是我实在记不住CMD下的那几行命令.这玩意的实现比较简单 ...

  3. 大话Python正则表达式

    python的正则表达式模块re import re match_object=re.compile(r"") result=re.match(match_object," ...

  4. JAVA反射原理

    什么是反射? 反射,一种计算机处理方式.是程序可以访问.检测和修改它本身状态或行为的一种能力.java反射使得我们可以在程序运行时动态加载一个类,动态获取类的基本信息和定义的方法,构造函数,域等.除了 ...

  5. php索引数组转成关联数组

    foreach($revenue_data as $k3=>$v3){ $temps[$v3['_id']['date']]= array( '_id'=>$v3['_id'], 'tot ...

  6. AngularJs学习笔记1——总体介绍

    这周末在家呆了两天,正好中午闲暇时间继续分享Angularjs相关,今天主要分享Angularjs总体介绍及数据绑定部分内容,下面直接进入主题. 1.基本概念: AngularJS是为了克服HTML在 ...

  7. 底层码农的Stanford梦 --- 从SCPD开始 [转]

    转载自知乎: https://zhuanlan.zhihu.com/p/25010074 一开始让我写这篇文章的时候,我是拒绝的.毕竟,我不是Stanford毕业的,出来写文章介绍Stanford,难 ...

  8. .net 实现aop的三种方法。

    动态代理 透明代理 编译时注入

  9. 给xcode项目修改名字

    在xcode项目开发中,经常会遇到需要修改项目名字的问题, 但是xcode本身修改项目名字比较麻烦,有时候修改的不完全,有时候修改了项目无法打开,无奈只能建一个新项目.这里提供一种修改xcode项目名 ...

  10. Jenkins构建Android项目持续集成之单元测试及代码覆盖率

    单元测试 在软件开发中一直在推崇TDD(测试驱动开发),但是一直不能被有效的执行或者并不是真正的测试驱动开发(先开发后写单元测试),因为我们懒!而Android开发又是大多应用层面的开发,很多都是和视 ...