一. 环境选择
首次使用Nanopi M4 ARM板, 最初加载的是官方给的rk3399-sd-friendlydesktop-bionic-4.4-arm64-20190523.img,
但我最终放弃使用该系统,理由如下:
1. 进行update时失败,即使更换了下载源,依旧出现问题;
2. 官方教程安装的是Opencv4.1,我使用不习惯,我自己安装opencv 时,由于下载源的原因,安装不成功;
3. 该系统会出现意外错误,比如卡死后重新登录后,在用户pi下,输入密码pi,仍然进不了系统能够,只能重刷系统;
基于此,我更换为官方给的rk3399-sd-lubuntu-desktop-xenial-4.4-armhf-20190523.img;此系统运行正常,以下的操作均在该系统上进行;
二. 按照常规的流程,安装Opencv;
参考博客:https://blog.csdn.net/u012840934/article/details/90235040
https://blog.csdn.net/weixin_44419695/article/details/88751066
三. 打开单个USB摄像头
插入USB摄像头后,在/dev/ 发现,有video8 和 video9 两个设备,再插入一个USB摄像头,会发现多出 video10 和 video11 两个设备,至于为什么会出现两个设备号,我不是清楚,需日后解决。
使用:v4l2-ctl -d /dev/video8 --list-formats 确认摄像头具体的设备号;最终我确定 video8 和 video10 是摄像头的设备号
利用Opencv 打开摄像头是一个很简单操作, 代码如下:
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main(int argc, char **argv)
{
VideoCapture cap;
cap.open(8);
while (1)
{
Mat frame;//定义一个变量把视频源一帧一帧显示
cap >> frame;
if (frame.empty())
{
cout << "Finish" << endl;
break;
}
imshow("Input video", frame);
waitKey(1);
}
cap.release();
return 0;
}
我可以确定我的摄像头是video8,但通过opencv open(8)时,出现了问题,总是运行不成功,我甚至 open() 0·--- 9,都失败了,最终采用的方式是:
rm /dev/video0
cp /dev/video8 /dev/video0 ;
然后在opencv 中进行open(0) 操作,成功;
四.打开两个USB摄像头 (失败)
模仿上述操作,我进行了 rm /dev/video1; cp /dev/video10 /dev/video1;
若同一时间,只运行一个摄像头,是可以成功的,但若两个同时运行,则只能某个摄像头采集的画面,另一个处于阻塞状态;该问题需继续解决