zoukankan      html  css  js  c++  java
  • ubuntu下安装opencv库+Python2.7环境安装及开发摄像头拍照应用

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

    安装

    #使用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终于可以顺利运行了,上面的应用大家就可以根据自己的需要随便改了。

  • 相关阅读:
    05.Zabbix自动化监控
    k8s容器编排
    docker容器
    第一章·ELKstack介绍及Elasticsearch部署
    第二章·Elasticsearch内部分片及分片处理机制介绍
    第三章·Logstash入门-部署与测试
    第四章·Kibana入门-安装,索引添加及界面功能
    第五章·Logstash深入-日志收集
    第六章·Logstash深入-收集java日志
    第七章·Logstash深入-收集NGINX日志
  • 原文地址:https://www.cnblogs.com/wrjvszq/p/7305915.html
Copyright © 2011-2022 走看看