这有啥难的?USB 摄像头插上去,全文完。
呵呵,后续装 Open CV 简直要命……
板载摄像头的安装
Well, I mean … This one:

所以…… 第一次玩硬件的我就一脸蒙逼地霸王硬上弓…… 拿着拍线就开始硬怼。结果发现,插槽其实是有个小扣子的,可以扣开,把拍线 「放进去」,然后把扣子扣上。
差点把排线插坏了啊!

呐,这就是插好后的效果。
USB 摄像头的安装
略……
啥?
如何安 OpenCV
本以为是个比较简单的事情的……
首先,我使用的是「RASPBIAN STRETCH WITH DESKTOP」,打包时间为 2018-04-18。之所以需要「With Desktop」是因为想用摄像头啊…… 不然它旁边的那个多么轻巧。
然后,使用
sudo apt update;
sudo apt upgrade -y;
把一切升级到最新的。
下面是安装 OpenCV。由于是要做开发,所以能安的包都直接安了,并没有考虑「最小安装」这个事儿:
sudo apt install libopencv-dev -y;
sudo apt install libatlas-base-dev -y;
sudo apt install libjasper-dev -y;
sudo apt install qt4-dev -y;
尤其是后面三个包,如果不安的话 Python import cv2
的时候会报错。
下面是 Python 的接口。
我们可以用 apt 来搞:
sudo apt install python-opencv -y;
也可以用 pip 来搞:
sudo pip3 install opencv-python
但是我发现,如果用 pip3 装的话,再用 pip2 装会提示已经装过了,但是只有 Python3 可以调用 cv,Python2 不行。反正我只用 Python3,那么一切顺利了。
最后再装一个 opencv-contrib-python
,我也不知道干啥的,如果不装的话,会报 No module named 'cv2.face'
之类的错误。
sudo pip install opencv-contrib-python
测试代码
测试 USB Camera:
import numpy as np
import cv2
cap = cv2.VideoCapture(0) # 使用第 0 号摄像头
while(True):
ret, frame = cap.read()
cv2.imshow('frame', frame)
k = cv2.waitKey(30) & 0xff
if k == 27: # press 'ESC' to quit
break
cap.release()
cv2.destroyAllWindows()
似乎是一切顺利吧。
测试摄像头板子
OpenCV 可不把板子上的摄像头当成 Video 设备,也就是说 ls /dev/video*
什么都没有,也就是说,OpenCV 找不到版子上的摄像头。
所以呢,Python 有一个叫做 picamera
的库,可以完成调用板子上摄像头的事儿:
from picamera import PiCamera
from time import sleep
camera = PiCamera()
camera.start_preview()
sleep(10)
camera.stop_preview()
需要注意的是,上面的效果只能通过 hdmi 来输出。即使你是用 SSH 登录的,也需要接上 HDMI 来看效果。
后记
一开始不知道板子上的摄像头和 USB 摄像头的区别,更不知道 OpenCV 不认识板子上的摄像头…… 纠结了大半个晚上。
而且,OpenCV 里面出了一大堆错误,以前都没有见到过。就比如,libjasper
是个啥……
最后,opencv-contrib-python
这个包会经常丢……不知道为啥。只要 --force-reinstall
一下就好了。
现在好了~继续搞 YOLO 去了~
发表回复