• 【树莓派】USB摄像头+python+opencv


    一、接入USB摄像头

    插入usb摄像头,在命令行模式下输入        lsusb        

    如果看到列举出来的信息有camera的话就说明识别成功,可以使用。

    二、测试摄像头

    1、拍照测试

    安装fswebcam

    sudo apt-get install fswebcam
    

    输入以下命令,开启摄像头

    fswebcam --no-banner -r 640x480 image3.jpg
    

    2、录像测试

    安装luvcview

    sudo apt-get install luvcview
    

    输入以下命令,开启摄像头

    luvcview -s 640x480
    

    三、安装python2

    sudo apt-get install python

    如果发现安装的是python3的话就需要把python改为python2

    四、安装OpenCV

    分别运行以下两条命令即可~

    1. sudo apt-get install libopencv-dev
    2. sudo apt-get install python-opencv

    在命令行模式下输入命令,测试是否安装成功(如果提示不存在python这个命令,说明可能同时存在python2和3的环境,需要特指python2)

    1. python
    2. import cv2
    3. cv2.__version__

    若正常出现下图所示的版本号,则表示安装成功!

    在这里插入图片描述

    最后退出python环境,可以输入exit(),或者直接快捷键ctrl+D

    五、拍照存储功能代码

    其中的图像预处理部分根据需要改。

    1. import cv2
    2. import numpy as np
    3. name = 0
    4. cap = cv2.VideoCapture(0)
    5. cap.set(3,640)
    6. cap.set(4,480)
    7. ret, frame = cap.read()
    8. rows, cols, channels = frame.shape
    9. print(cols, rows, channels)
    10. # 图像预处理
    11. def img_p(img):
    12. # 灰度化
    13. gray_img = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    14. # 平滑滤波
    15. blur = cv2.blur(gray_img, (3,3))
    16. # 二值化
    17. ret1, th1 = cv2.threshold(blur, 190, 255, cv2.THRESH_BINARY)
    18. # 透视变换
    19. b = 50
    20. pts1 = np.float32([[b, 0], [cols-b, 0], [0, rows], [cols, rows]])
    21. pts2 = np.float32([[0, 0], [cols, 0], [0, rows], [cols, rows]])
    22. M = cv2.getPerspectiveTransform(pts1, pts2)
    23. dst = cv2.warpPerspective(blur, M, (cols, rows))
    24. return dst
    25. while(1):
    26. ret,frame = cap.read()
    27. dst = img_p(frame)
    28. cv2.imshow('usb camera', dst)
    29. k = cv2.waitKey(1)
    30. if (k == ord('q')):
    31. break
    32. elif(k == ord('s')):
    33. #name = input('name:')
    34. name += 1
    35. #filename = r'./camera/' + str(name) + '.jpg'
    36. filename = str(name) + '.jpg'
    37. cv2.imwrite(filename, dst)
    38. print(filename)
    39. #break
    40. cap.release()
    41. cv2.destroyAllWindows()

    然后终端执行python 文件名.py,即可看到出来画面了

    (如果提示不存在python这个命令,说明可能同时存在python2和3的环境,需要特指python2)

    在这里插入图片描述

     

    注:在终端执行python 文件名.py后若出现以下错误
    在这里插入图片描述
    或者是关于connection timeout 的错误,换一下摄像头usb的口,树莓派那四个口都试过来,会有可以用的。

    让USB CAMERA界面在前端,按s保存图片,q退出程序。

    OK了。

     

    六、报错:python Non-ASCII character '\xe5' in file

    在脚本最开头加上

     # coding=UTF-8
    就搞定了。
  • 相关阅读:
    29java容器方法概述(第二级结构)
    GLAD:体全息
    人工智能数学基础--概率与统计13:连续随机变量的标准正态分布
    redmine旧系统迁移到docker中
    C#上位机序列10: Winform上位机通用框架
    0922hw
    线程池执行流程
    C++标准库分析总结(九)——<仿函数>
    使用GPU搭建支持玛雅(Maya)和Adobe AI,DW,PS的职校云计算机房
    GO语言-栈的应用-表达式求值
  • 原文地址:https://blog.csdn.net/weever7/article/details/125782340