香橙派/树莓派OpenCV环境搭建:从系统烧录到摄像头测试全攻略
1. 项目概述与核心价值
最近几年,香橙派和树莓派这类单板计算机在电子设计竞赛、嵌入式视觉项目和创客圈子里火得不行。它们体积小、功耗低,但性能足够跑起一个完整的Linux系统和像OpenCV这样的计算机视觉库,简直就是为“电赛”这类需要快速原型验证的场景量身定做的。但说实话,从拿到一块崭新的板子,到能稳定运行一个USB摄像头采集图像并做视觉处理的程序,中间的路可不好走。我见过太多同学卡在系统配置、环境安装、网络连接这些“前戏”上,折腾好几天还没摸到OpenCV的边,宝贵的备赛时间全浪费了。
这个指南的目的,就是帮你把这些“脏活累活”一次性扫清。我们不谈空洞的理论,只聚焦于从零开始,手把手带你完成一个能在香橙派或树莓派上稳定运行的OpenCV视觉开发环境搭建。核心就四件事:第一,给板子装上Linux系统并完成基础配置;第二,打通SSH和VNC,让你能在自己舒服的电脑上远程操作它;第三,搞定USB摄像头的驱动和权限,确保它能被OpenCV正常调用;第四,用最简洁、避坑的方式安装OpenCV。整个过程我会穿插大量我实际踩过的坑和对应的解决方案,目标是让你在半天内,就能进入真正的视觉算法开发环节。
2. 硬件准备与系统镜像烧录
工欲善其事,必先利其器。在开始之前,你需要准备好硬件和软件工具。硬件方面,根据你的板子型号(如香橙派5、树莓派4B等),准备好对应的TF卡(建议32GB以上,Class10或A1/A2速度等级)、USB摄像头(推荐免驱的UVC协议摄像头)、电源(务必使用官方推荐或足额5V/3A的电源,供电不稳是万恶之源)、网线以及HDMI线(初期调试用)。软件方面,你需要一台Windows/Mac/Linux电脑,用于烧录系统和后续的远程连接。
2.1 系统镜像选择与下载
对于树莓派,官方提供的Raspberry Pi OS(基于Debian)是最稳妥的选择。去树莓派官网下载“Raspberry Pi OS with desktop”的镜像即可。对于香橙派,情况稍复杂一些。官方通常会为不同型号提供适配的镜像,比如基于Ubuntu或Debian的。这里有一个关键点:务必从香橙派官方网站或其GitHub仓库下载对应你板子型号的最新稳定版镜像。网络上流传的某些“优化版”或老旧镜像,可能会缺少必要的驱动或内核模块,导致后续摄像头无法识别或性能异常。
注意:近期有用户反馈“香橙派6 出了点问题,如果镜像被压缩过,请检查他是否已损坏”。这提示我们,下载后的镜像文件(通常是.img.xz或.img.gz格式)在解压或烧录前,最好校验一下SHA256哈希值,确保文件完整无误。官方下载页面通常会提供校验码。
2.2 使用BalenaEtcher进行镜像烧录
烧录工具我强烈推荐BalenaEtcher。它开源、免费、跨平台,而且操作极其简单,几乎不会出错。将TF卡通过读卡器插入电脑,打开Etcher,三步走:1. “Select image”选择你下载并解压好的.img镜像文件;2. “Select target”选择你的TF卡驱动器;3. 点击“Flash!”开始烧录。这个过程大概需要5-15分钟,耐心等待完成即可。
烧录完成后,Windows系统可能会弹窗提示要格式化TF卡,千万要点“取消”!因为此时TF卡已经被分成了多个Linux系统分区,Windows无法识别,想格式化是正常现象,但格了系统就没了。对于树莓派,烧录完成后你可能需要做一件事:在TF卡的boot分区(Windows下可访问)根目录下,新建一个名为ssh的空文件(无后缀),这是为了首次启动时自动启用SSH服务。对于香橙派,多数镜像默认已开启SSH,如果不确定,也可以同样创建这个文件。
3. 首次启动与基础网络配置
将烧录好的TF卡插入板子,连接好网线、电源和显示器(首次启动建议接显示器,方便观察),上电启动。第一次启动会进行系统初始化,可能需要几分钟。看到桌面登录界面后,使用默认账户登录(树莓派通常是pi/raspberry,香橙派可能是orangepi/orangepi或你自己设置的)。
3.1 连接Wi-Fi与获取IP地址(无头模式必备)
如果你打算长期使用无头模式(无显示器),那么让板子连接上和你电脑同一个局域网的Wi-Fi是必须的。在桌面环境下,直接通过图形界面连接Wi-Fi最简单。连接成功后,打开终端,输入命令ifconfig或ip addr show来查看网络接口信息。找到wlan0接口,记下它的inet地址,这就是板子在局域网内的IP地址,比如192.168.1.100。如果你使用网线,则查看eth0接口的IP。
3.2 启用并配置SSH服务
现代树莓派和香橙派镜像基本都预装了OpenSSH服务器。但为了安全,树莓派可能默认禁用。我们之前创建的ssh空文件就是为了启用它。现在,我们可以通过终端确认并微调SSH配置。
打开终端,输入sudo systemctl status ssh查看SSH服务状态。如果显示active (running),说明服务已启动。为了后续连接方便,我们可以设置SSH服务开机自启(通常已是默认):sudo systemctl enable ssh。
一个重要的安全实践是修改默认密码。在终端输入passwd,然后按照提示为当前用户(如pi)设置一个强密码。如果你使用香橙派,默认的orangepi密码也必须改掉。
4. 从主机远程连接:SSH与VNC详解
有了IP地址,我们就可以从主力电脑上远程操作板子了,这才是高效的开发方式。
4.1 使用SSH进行命令行远程控制
在Windows上,你可以使用PuTTY、MobaXterm或者Windows 10/11自带的PowerShell/终端。在PowerShell中,连接命令非常简单:
ssh pi@192.168.1.100首次连接时会提示主机密钥认证,输入yes。然后输入你刚才设置的密码,就能登录到板子的命令行界面了。从此,你所有的终端操作都可以在这台更强大的电脑上进行。
实操心得:频繁输入IP和用户名很麻烦。为了简化命令,你可以在 Windows 的 git bash 中配置 ssh config 文件,避免每次输。具体做法是,在用户目录下的
.ssh文件夹(如果没有就新建)里,创建一个名为config的文件(无后缀),用文本编辑器打开,添加如下内容:Host mypi HostName 192.168.1.100 User pi保存后,以后只需要在终端输入
ssh mypi即可连接,极大提升效率。Mac和Linux用户同理,配置文件路径通常是~/.ssh/config。
4.2 使用VNC进行图形化远程桌面
有些操作或调试还是图形界面方便,比如后面我们要用到的摄像头预览工具。这就需要VNC。在板子的终端(可以通过SSH连接后操作)里,安装并启用VNC服务器。以树莓派为例(Raspberry Pi OS自带):
sudo apt update sudo apt install realvnc-vnc-server -y sudo systemctl enable vncserver-x11-serviced sudo systemctl start vncserver-x11-serviced对于香橙派的Ubuntu镜像,可以安装TightVNC或x11vnc,例如:
sudo apt update sudo apt install x11vnc -y sudo x11vnc -storepasswd # 设置一个VNC连接密码 sudo cp /root/.vnc/passwd /etc/x11vnc.pass sudo nano /etc/systemd/system/x11vnc.service然后创建并启用systemd服务(内容较多,建议搜索“x11vnc systemd服务配置”获取详细脚本)。更简单的方法是使用桌面环境自带的屏幕共享功能,如Ubuntu的“Settings -> Sharing -> Screen Sharing”。
在电脑上,你需要一个VNC客户端,如RealVNC Viewer、TigerVNC或MobaXterm内置的VNC。打开客户端,输入板子的IP地址,然后输入你设置的VNC密码,就能看到板子的完整桌面了。
5. 系统优化与依赖准备
远程连接稳定后,我们首先要对系统做一些优化,并为安装OpenCV准备编译环境和依赖库。
5.1 更换软件源加速安装
默认的软件源服务器可能在国外,下载速度很慢。更换为国内镜像源能极大提升效率。以香橙派Ubuntu或树莓派Debian系为例,备份原有源列表文件后,编辑源文件。
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak sudo nano /etc/apt/sources.list将文件里的http://ports.ubuntu.com等网址替换为国内镜像,例如阿里云(http://mirrors.aliyun.com/ubuntu-ports/)或清华源。树莓派Raspberry Pi OS的源文件在/etc/apt/sources.list.d/raspi.list。修改后更新软件列表:
sudo apt update sudo apt upgrade -y这个过程可能会比较长,但能确保系统所有软件包更新到最新,避免后续因依赖版本问题踩坑。
5.2 安装编译工具与必要依赖
OpenCV从源码编译需要一整套工具链和大量的依赖库。以下命令将安装编译器、构建工具、图像I/O库、视频编解码库、优化数学库等。请逐条执行,确保网络通畅。
sudo apt install -y build-essential cmake git pkg-config sudo apt install -y libjpeg-dev libtiff-dev libpng-dev sudo apt install -y libavcodec-dev libavformat-dev libswscale-dev libv4l-dev sudo apt install -y libxvidcore-dev libx264-dev sudo apt install -y libfontconfig1-dev libcairo2-dev sudo apt install -y libgdk-pixbuf2.0-dev libpango1.0-dev sudo apt install -y libgtk2.0-dev libgtk-3-dev sudo apt install -y libatlas-base-dev gfortran sudo apt install -y libhdf5-dev libhdf5-serial-dev libhdf5-103 sudo apt install -y libqt5gui5 libqt5webkit5 libqt5test5 python3-pyqt5 sudo apt install -y python3-dev python3-pip python3-numpy这一长串命令是构建一个功能完整的OpenCV所必需的。libv4l-dev对于USB摄像头支持至关重要。libatlas-base-dev和gfortran为Python的数值计算提供优化。安装过程会占用几百MB磁盘空间,请确保你的TF卡有足够容量(建议16GB以上)。
6. USB摄像头驱动与配置
这是视觉项目的基础输入设备,配置不当会导致OpenCV无法捕获图像。
6.1 检查摄像头识别与驱动
将USB摄像头插入板子的USB口。在终端输入以下命令来检查系统是否识别到了设备:
lsusb你应该能在输出列表中看到你的摄像头厂商和型号信息,例如“Logitech, Inc.”。接着,检查Video4Linux(V4L2)设备节点:
ls -l /dev/video*通常,摄像头会被识别为/dev/video0。如果有多个video设备,可能是内置的CSI摄像头(如果有)或虚拟设备。你可以使用v4l2-ctl工具来获取详细信息:
sudo apt install v4l-utils -y v4l2-ctl --list-devices v4l2-ctl -d /dev/video0 --list-formats--list-formats可以查看摄像头支持的像素格式(如MJPG, YUYV),这对后续OpenCV设置采集参数有参考价值。
6.2 测试摄像头并解决权限问题
最简单直接的测试方法是使用ffplay(来自ffmpeg)或guvcview进行预览:
sudo apt install ffmpeg -y ffplay -f v4l2 -input_format mjpeg -framerate 30 -video_size 640x480 /dev/video0如果看到实时视频画面,恭喜,摄像头驱动和硬件连接正常。但很多时候,普通用户(如pi)直接运行OpenCV程序访问/dev/video0会报错“Permission denied”。这是因为设备默认属于root用户和video组。
解决方案一(推荐,一劳永逸):将当前用户加入video组。
sudo usermod -a -G video $USER执行后,需要完全注销并重新登录(或重启),用户组更改才会生效。之后,你的用户就有权限访问视频设备了。
解决方案二:临时使用sudo权限运行你的Python脚本。但这不适合日常开发调试,且可能带来环境变量不一致的问题。
避坑指南:如果加入
video组后仍然无法访问,可能是udev规则问题。可以尝试检查/dev/video0的权限:ls -l /dev/video0。理论上,所属组应为video。如果组是root,可以尝试创建一个udev规则文件:sudo nano /etc/udev/rules.d/99-video.rules,加入一行SUBSYSTEM=="video4linux", GROUP="video", MODE="0666",保存后重启或重新加载udev规则:sudo udevadm control --reload-rules && sudo udevadm trigger。
7. OpenCV的编译与安装全过程
终于来到核心环节。我们选择从源码编译安装OpenCV,虽然耗时,但能获得最适合自己板子硬件(特别是ARM架构)的优化版本,并且可以自定义需要的模块。
7.1 下载OpenCV源码
选择一个稳定的版本,比如OpenCV 4.8.0。在用户主目录下操作:
cd ~ wget -O opencv.zip https://github.com/opencv/opencv/archive/4.8.0.zip wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.8.0.zip unzip opencv.zip unzip opencv_contrib.zip如果下载慢,可以考虑使用国内镜像源或先在本机下载好再用SCP传上去。解压后你会得到opencv-4.8.0和opencv_contrib-4.8.0两个文件夹。
7.2 配置CMake构建选项
进入OpenCV源码目录,创建一个构建目录,并用CMake进行配置。这是最关键的一步,配置选项决定了编译出的OpenCV包含哪些功能。
cd ~/opencv-4.8.0 mkdir build && cd build然后运行CMake命令。下面的命令是一个经过优化的配置,关闭了一些在嵌入式平台上不必要或编译困难的功能,开启了NEON优化(针对ARM CPU),并指定了Python3的安装路径。
cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-4.8.0/modules \ -D ENABLE_NEON=ON \ -D ENABLE_VFPV3=ON \ -D BUILD_TESTS=OFF \ -D BUILD_PERF_TESTS=OFF \ -D BUILD_EXAMPLES=OFF \ -D INSTALL_PYTHON_EXAMPLES=OFF \ -D OPENCV_ENABLE_NONFREE=OFF \ -D WITH_GTK=ON \ -D WITH_FFMPEG=ON \ -D WITH_V4L=ON \ -D WITH_LIBV4L=ON \ -D BUILD_opencv_python3=ON \ -D PYTHON3_EXECUTABLE=$(which python3) \ -D PYTHON3_INCLUDE_DIR=$(python3 -c "import sysconfig; print(sysconfig.get_path('include'))") \ -D PYTHON3_LIBRARY=$(python3 -c "import sysconfig; print(sysconfig.get_config_var('LIBDIR'))") \ -D PYTHON3_NUMPY_INCLUDE_DIRS=$(python3 -c "import numpy; print(numpy.get_include())") \ -D PYTHON3_PACKAGES_PATH=$(python3 -c "import sysconfig; print(sysconfig.get_path('purelib'))") \ ..关键参数解析:
-D OPENCV_EXTRA_MODULES_PATH:指定contrib扩展模块路径,包含很多额外功能。-D ENABLE_NEON=ON:为ARM Cortex-A系列处理器开启NEON SIMD指令集加速,对性能提升显著。-D WITH_V4L=ON和-D WITH_LIBV4L=ON:确保对Video4Linux的支持,这是USB摄像头的基础。-D WITH_FFMPEG=ON:支持从视频文件或网络流读取视频。-D BUILD_opencv_python3=ON及相关Python参数:确保编译出Python绑定,并正确链接到系统已有的Python3和NumPy。
执行这个命令后,CMake会检查依赖并生成Makefile。请仔细查看终端输出,确保没有“NOT FOUND”之类的致命错误。常见的警告可以忽略,但如果有关于重要依赖(如Python、numpy)的报错,需要回头检查依赖是否安装成功。
7.3 编译与安装
配置成功后,开始编译。使用make命令,并加上-j$(nproc)参数,让编译过程使用所有CPU核心,以加快速度。树莓派4B/香橙派5这类四核板子,编译大约需要1-2小时。
make -j$(nproc)编译过程可能会占用大量内存,如果板子内存较小(如1GB),可能会因内存不足而失败。如果遇到这种情况,可以去掉-j$(nproc),只用单核编译(make),或者使用-j2指定两个核心,虽然慢但更稳定。
编译成功后,进行安装:
sudo make install sudo ldconfigsudo make install会将编译好的库文件、头文件等安装到/usr/local目录下。sudo ldconfig命令更新系统的动态链接库缓存,让系统能找到新安装的OpenCV库。
7.4 验证安装
安装完成后,需要验证Python和C++环境是否都能正确使用OpenCV。
Python验证:打开Python3交互环境:
python3在Python提示符下输入:
import cv2 print(cv2.__version__) print(cv2.getBuildInformation())如果成功输出版本号(如“4.8.0”)和构建信息,并且没有报错ModuleNotFoundError: No module named 'cv2',则说明Python版的OpenCV安装成功。getBuildInformation()的输出里可以确认V4L/V4L2、FFMPEG等是否已开启。
C++验证:创建一个简单的测试程序test_opencv.cpp:
#include <opencv2/opencv.hpp> #include <iostream> int main() { std::cout << "OpenCV version: " << CV_VERSION << std::endl; cv::Mat image = cv::Mat::zeros(200, 300, CV_8UC3); cv::putText(image, "Hello OpenCV!", cv::Point(30, 100), cv::FONT_HERSHEY_SIMPLEX, 1, cv::Scalar(0, 255, 0), 2); cv::imwrite("test_output.jpg", image); std::cout << "Test image saved." << std::endl; return 0; }编译并运行:
g++ test_opencv.cpp -o test_opencv `pkg-config --cflags --libs opencv4` ./test_opencv如果程序能成功运行并生成一张图片,说明C++环境也配置成功。
8. 基础OpenCV视觉入门与摄像头测试
环境搭好了,我们来点实际的,写一个最简单的摄像头采集和显示的Python程序,验证整个流水线是否通畅。
8.1 第一个摄像头采集程序
创建一个名为test_camera.py的文件:
import cv2 import time # 尝试打开摄像头,0通常是第一个摄像头(/dev/video0) cap = cv2.VideoCapture(0) # 检查摄像头是否成功打开 if not cap.isOpened(): print("错误:无法打开摄像头。请检查:") print("1. 摄像头是否连接?") print("2. 用户是否在video组? (执行了 'sudo usermod -a -G video $USER' 并重启了吗?)") print("3. 是否有其他程序占用了摄像头?") exit() # 设置采集参数(非必须,但可以优化) # 设置分辨率,部分摄像头支持 cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640) cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480) # 尝试设置MJPG格式以获得更高帧率(如果摄像头支持) cap.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter_fourcc(*'MJPG')) print("开始采集视频,按 'q' 键退出...") while True: # 逐帧捕获 ret, frame = cap.read() if not ret: print("错误:无法读取帧。") break # 在此处可以对帧进行处理,例如转换为灰度图 # gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # 显示结果帧 cv2.imshow('Camera Test - Press Q to quit', frame) # 每帧之间等待1毫秒,并检查是否按下了‘q’键 if cv2.waitKey(1) & 0xFF == ord('q'): break # 可选:降低循环频率,减少CPU占用 # time.sleep(0.03) # 目标约30FPS # 释放摄像头并关闭所有OpenCV窗口 cap.release() cv2.destroyAllWindows() print("程序结束。")8.2 程序运行与调试
通过SSH在板子上运行这个程序。如果你已经配置了VNC,也可以在图形界面下直接运行,这样就能看到弹出的视频窗口。
python3 test_camera.py如果一切顺利,你应该能看到一个显示摄像头实时画面的窗口。按‘Q’键退出。
常见问题与排查:
报错:
[ WARN:0] global ... VIDEOIO(V4L2:/dev/video0): can‘t open camera by index...- 检查权限:确保当前用户已在
video组,且已重新登录。 - 检查设备号:如果系统有多个视频设备(如CSI摄像头),
VideoCapture(0)可能不对。尝试1或2,或者使用/dev/video0作为参数:cv2.VideoCapture(‘/dev/video0’)。 - 检查占用:是否有其他程序(如
guvcview,ffplay)正在使用摄像头?关闭它们再试。
- 检查权限:确保当前用户已在
画面卡顿、帧率很低
- 分辨率过高:默认可能以最高分辨率采集。在
cap.read()之前,使用cap.set降低分辨率(如640x480)。 - 编码格式:默认可能是YUYV,压缩率低。尝试像示例中那样设置为MJPG格式(如果摄像头支持),传输数据量小,帧率更高。
- 无线网络干扰(VNC下):如果通过VNC查看,卡顿可能是网络延迟。尝试在SSH中运行,并将图像保存为文件来测试实际采集帧率。
- CPU性能:在循环中执行复杂的图像处理(如
cvtColor)会拖慢速度。可以先注释掉处理代码测试。
- 分辨率过高:默认可能以最高分辨率采集。在
无法打开显示(通过SSH运行时报错)
- SSH会话默认没有图形显示能力。可以通过VNC运行,或者在SSH中运行时,将
cv2.imshow和cv2.waitKey注释掉,改用cv2.imwrite保存图片来测试采集是否成功。
- SSH会话默认没有图形显示能力。可以通过VNC运行,或者在SSH中运行时,将
9. 进阶配置与性能优化
基础功能跑通后,我们可以进行一些优化,让开发环境更顺手,程序运行更高效。
9.1 使用虚拟环境管理Python包
强烈建议为你的视觉项目创建独立的Python虚拟环境,避免污染系统Python环境,也便于管理依赖。
sudo apt install python3-venv -y cd ~ python3 -m venv cv_env source ~/cv_env/bin/activate激活虚拟环境后,命令行提示符前会出现(cv_env)。在这个环境下,用pip安装的包(如numpy,如果你需要更新版本)只会安装在此环境中。但是,我们编译安装的OpenCV是系统级的,在虚拟环境中同样可以import cv2。虚拟环境的主要作用是管理其他Python依赖。
9.2 OpenCV性能优化技巧
在资源受限的派上,性能至关重要。
- 降低分辨率:处理图像前,如果不需要高清细节,先用
cv2.resize降低分辨率,能极大减少后续处理的计算量。 - ROI(感兴趣区域):如果只关心图像某一部分,可以先定义ROI,只对这一部分进行处理。
- 灰度处理:很多算法(如边缘检测、特征点)可以在灰度图上进行,比处理三通道的BGR图像快三倍。
- 使用内置优化:OpenCV在编译时如果开启了NEON、VFPV3,其内部函数已经过优化。确保你的程序能利用这些优化,通常不需要额外操作。
- 避免循环:在Python中,尽量避免用纯Python循环遍历像素点。尽量使用OpenCV或NumPy的向量化操作,它们底层是C++实现,速度快得多。
9.3 集成开发环境(IDE)配置
在电脑上使用VSCode进行远程开发是极佳体验。安装VSCode的“Remote - SSH”扩展。然后通过SSH连接到你的派(ssh mypi,如果你配置了config)。在远程环境中,你可以安装Python扩展,直接编辑、运行、调试板子上的代码,就像在本地开发一样。代码补全、语法高亮、调试器一应俱全,生产力倍增。
10. 电赛备赛专项建议与扩展方向
对于电赛备赛,时间紧任务重,环境稳定和代码可靠是关键。
- 环境固化:在完成上述所有步骤并验证无误后,立即为你的TF卡制作一个完整镜像备份。使用Win32DiskImager或
dd命令,将整个TF卡备份成一个.img文件。这样,一旦后续实验把系统搞崩了,可以几分钟内恢复到一个完美的起点。 - 电源管理:准备一个可靠的5V/3A以上电源。供电不足会导致板子重启、摄像头掉线、外设失灵,是调试中最诡异的问题来源之一。
- 代码版本控制:即使是一个人开发,也建议使用Git。在板子上初始化仓库,或者将代码放在电脑上通过SSH同步。每次重大改动前提交,便于回溯。
- 扩展方向:
- 多摄像头:如果需要多个USB摄像头,系统会分配不同的
/dev/videoX设备号。在OpenCV中创建多个VideoCapture对象分别打开即可。 - CSI摄像头:树莓派专用的CSI摄像头性能更好。需要启用相机接口(
sudo raspi-config),并使用libcamera相关工具或OpenCV的特定后端进行调用。香橙派也有自己的MIPI CSI摄像头驱动,需参考其官方文档。 - 算法部署:在完成OpenCV传统视觉算法(如颜色识别、轮廓检测、模板匹配)后,可以探索更深的领域,例如利用香橙派5的NPU部署轻量级深度学习模型(如YOLOv5/v8,需使用ONNX Runtime、NCNN或TFLite等推理框架)。这属于进阶内容,但也是当前视觉赛题的热点。
- 多摄像头:如果需要多个USB摄像头,系统会分配不同的
整个环境搭建过程就像盖房子,地基(系统、驱动)打牢了,上层建筑(视觉算法)才能稳固。按照这个指南一步步走下来,你应该已经拥有了一个随时可用的、强大的嵌入式视觉开发平台。接下来,就是把你的创意和算法,在这个平台上尽情实现了。记住,在电赛或任何项目中,快速复现和稳定运行比追求极致的复杂度更重要。先让流程跑通,再逐步优化。
