飞道的博客

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

495人阅读  评论(0)

一、接入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
就搞定了。

转载:https://blog.csdn.net/weever7/article/details/125782340
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场