香橙派Zero2 V1.5使用摄像头

香橙派Zero2 V1.5使用摄像头

详细可参考 OrangePi_Zero2_H616_用户手册_v4.0.pdf 中的 3.13.6 USB 摄像头测试章节。

操作如下:

  1. 首先将 USB 摄像头插入到 Orange Pi 开发板的 USB 接口中
  2. 然后通过 lsmod 命令可以看到内核自动加载了下面的模块

在这里插入图片描述

  1. 更新一下源,安装 v4l2-ctl 的安装包、通过 v4l2-ctl 命令可以看到 USB 摄像头的设备节点信息为/dev/video0
orangepi@orangepi:~$ sudo apt update
orangepi@orangepi:~$ sudo apt install -y v4l-utils
orangepi@orangepi:~$ v4l2-ctl --list-devices

出现如图所示:
在这里插入图片描述

  1. 使用 fswebcam 测试 USB 摄像头

    A. 安装 fswebcam,执行下面的命令

sudo apt-get install -y fswebcam

B. 安装完 fswebcam 后可以使用下面的命令来拍照

	a)-d 选项用于指定 USB 摄像头的设备节点

	b)--no-banner 用于去除照片的水印

	c)-r 选项用于指定照片的分辨率

	d)-S 选项用设置于跳过前面的帧数

	e) ./image.jpg 用于设置生成的照片的名字和路径
sudo fswebcam -d /dev/video0 --no-banner -r 1280x720 -S 5 ./image.jpg
 #注意这里的video0要根据实际的情况修改

出现下面表示接入成功

orangepi@orangepizero2:~$ sudo fswebcam -d /dev/video0 --no-banner -r 1280x720 -S 5 ./image.jpg
--- Opening /dev/video0...
Trying source module v4l2...
/dev/video0 opened.
No input was specified, using the first.
--- Capturing frame...
Skipping 5 frames...
Capturing 1 frames...
Captured 6 frames in 0.19 seconds. (31 fps)
--- Processing captured image...
Disabling banner.
Writing JPEG image to './image.jpg'.

C. 在服务器版的 linux 系统中,拍完照后可以直接通过 mobaxterm 拖到电脑桌面,查看图片

​​

  1. 使用 mjpg-streamer 测试 USB 摄像头

    a. 下载 mjpg-streamer

    Gitee 的镜像下载地址为:

orangepi@orangepi:~$ git clone https://gitee.com/leeboby/mjpg-streamer
b. 安装依赖的软件包

Ubuntu 系统
orangepi@orangepi:~$ sudo apt-get install -y cmake libjpeg8-dev
c. 编译安装 mjpg-streamer
orangepi@orangepi:~$ cd mjpg-streamer/mjpg-streamer-experimental
orangepi@orangepi:~/mjpg-streamer/mjpg-streamer-experimental$ make -j4
orangepi@orangepi:~/mjpg-streamer/mjpg-streamer-experimental$ sudo make install
d. 然后输入下面的命令启动 mjpg_streamer

​​在这里插入图片描述

orangepi@orangepizero2:~/mjpg-streamer/mjpg-streamer-experimental$ ls
orangepi@orangepizero2:~/mjpg-streamer/mjpg-streamer-experimental$ vi start.sh

​​在这里插入图片描述

在这里插入图片描述

根据如上图所示修改,注意,video 的序号不一定都是 video0,请以实际看到的为准。

接着执行./start.sh

orangepi@orangepizero2:~/mjpg-streamer/mjpg-streamer-experimental$ ./start.sh
MJPG Streamer Version: git rev: 85f89a8c321e799fabb1693c5d133f3fb48ee748
 i: Using V4L2 device.: /dev/video0
 i: Desired Resolution: 640 x 480
 i: Frames Per Second.: 30
 i: Format............: UYVY
 i: JPEG Quality......: 80
 i: TV-Norm...........: DEFAULT
 i: Could not obtain the requested pixelformat: UYVY , driver gave us: MJPG
    ... will try to handle this by checking against supported formats.
    ... Falling back to the faster MJPG mode (consider changing cmd line options).
UVCIOC_CTRL_ADD - Error at Pan (relative): Inappropriate ioctl for device (25)
UVCIOC_CTRL_ADD - Error at Tilt (relative): Inappropriate ioctl for device (25)
UVCIOC_CTRL_ADD - Error at Pan Reset: Inappropriate ioctl for device (25)
UVCIOC_CTRL_ADD - Error at Tilt Reset: Inappropriate ioctl for device (25)
UVCIOC_CTRL_ADD - Error at Pan/tilt Reset: Inappropriate ioctl for device (25)
UVCIOC_CTRL_ADD - Error at Focus (absolute): Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Pan (relative): Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Tilt (relative): Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Pan Reset: Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Tilt Reset: Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Pan/tilt Reset: Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Focus (absolute): Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at LED1 Mode: Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at LED1 Frequency: Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Disable video processing: Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Raw bits per pixel: Inappropriate ioctl for device (25)
 o: www-folder-path......: ./www/
 o: HTTP TCP port........: 8080
 o: HTTP Listen Address..: (null)
 o: username:password....: disabled
 o: commands.............: enabled

e. 然后在和开发板同一局域网的 Ubuntu PC 或者 Windows PC 或者手机的浏览 orange Pi 器中输入 【开发板的 IP 地址:8080】就能看到摄像头输出的视频了

​​在这里插入图片描述

4.在/etc/xdg/autostart/下创建 mjpg.desktop 文件输入以下内容

/etc/xdg/autostart 这个文件夹下面的.desktop 文件会在开机的时候自动启动

orangepi@orangepizero2:/etc/xdg/autostart$ sudo vi mjpg.desktop

内容如下,可能需要更改的地方 Name、Exec

[Desktop Entry]
Name=mjpg //名字
Exec=/home/orangepi/mjpg.sh//自己的文件路径
Type=Application
NoDisplay=true

下一步重启输入命令

sudo reboot -f

​​在这里插入图片描述

出现如上图所示开启自启动拍照可以运行

### 实现Orange Pi Zero2W设备上的摄像头实时显示功能 #### 硬件支持与配置 Orange Pi Zero 2 支持 I2C 接口,这使得它可以通过特定的驱动程序连接外部设备,例如 USB 摄像头或 SPI 显示屏[^1]。为了实现摄像头的实时视频流显示功能,可以参考类似的开发案例,比如使用 TFT-LCD 屏幕来展示 USB 摄像头捕获的画面[^3]。 #### 软件环境搭建 在 Ubuntu 18.04.5 LTS 下完成开发环境设置时,需安装必要的工具链和库文件。具体来说,需要确保以下依赖项已正确安装: - `aarch64-none-linux-gnu-gcc` 编译器用于交叉编译。 - OpenCV 库及其 Python 绑定,以便处理图像数据并将其渲染到屏幕上。 以下是安装所需软件包的一个简单脚本: ```bash sudo apt update && sudo apt upgrade -y sudo apt install build-essential cmake git libgtk2.0-dev pkg-config \ libavcodec-dev libavformat-dev libswscale-dev python3-dev python3-numpy \ libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev gfortran \ openexr libatlas-base-dev libqtgui4 libqtwebkit4 libqt4-test -y ``` 接着克隆 OpenCV 和其贡献模块源码,并按照官方指南构建自定义版本以适配硬件平台需求。 #### 视频采集与显示逻辑 利用 WebRTC 技术栈可以在浏览器端呈现来自 Orange Pi 的实时视频流[^4]。然而对于本地屏幕输出,则更倾向于直接操作像素缓冲区并通过图形界面框架绘制每一帧的内容。下面给出一段伪代码示意如何读取相机输入并将结果显示出来: ```python import cv2 cap = cv2.VideoCapture(0) while True: ret, frame = cap.read() if not ret: break # 将帧转换成适当大小适应显示器分辨率 resized_frame = cv2.resize(frame, (desired_width, desired_height)) # 在窗口中展示调整后的图片 cv2.imshow('Camera Feed', resized_frame) key = cv2.waitKey(1) & 0xFF if key == ord('q'): break cap.release() cv2.destroyAllWindows() ``` 上述代码片段展示了基础流程:初始化 VideoCapture 对象指向默认摄像机索引;循环获取最新一帧直至用户主动终止进程;期间不断刷新 GUI 上预览区域内的视觉效果直到退出条件满足为止。 #### 家居安防扩展建议 如果计划进一步拓展此项目至家庭安全领域,那么集成更多传感器节点将是明智之举。例如,在现有基础上加入温湿度感应单元、人体红外探测装置以及气体浓度分析仪等功能组件后,配合中央控制器统一调度各子系统的运作状态,最终形成一套完整的智能化解决方案[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值