一、常用接口和视觉处理方法
摄像头的开启
1 | #摄像头类创建 |
异常的处理:错误处理 - 廖雪峰的官方网站 (liaoxuefeng.com)
ret的作用:
通常是一个函数返回值的缩写,在opencv中经常用来读取函数的布尔值,判断摄像是否打开、头图像是否读取成功等,防止后续处理空值报错
摄像头的驱动:
-
self.Video = cv2.VideoCapture(8, cv2.CAP_V4L2) <!--code1-->
三、Opencv实现色块识别
#RDK X3 开发体验
题主目前初学Python,OpenCV,Ros2, 且对深度学习,图像处理等知识存在相当大的欠缺,基本参考RDK X3的官方手册学习,不得不说,RDK X3的官方镜像,社区生态支持做的都相当便捷,嵌入式边缘计算设备方面领域能做到对初学者如此友好的仅此一家。
sudo bash -c ‘echo 1 > /sys/devices/system/cpu/cpufreq/boost’
可通过
sudo hrut_somstatus
命令查看当前芯片工作频率、温度等状态:
供电不稳定导致X3无法正常启动,或者程序执行过程中摄像头无法正常驱动
驱动USB摄像头时应该确定设备号,使用
ls /dev/video*
命令查看当前的video设备
使用 rc.local 可以便捷配置开机自启动脚本
使用ros2或者tros命令应配置好环境变量
烧录镜像应选择稳定版本,比如 2.10 ,3.0.0beta存在一些小毛病(VNC无法正常使用)
vscode remote无法获得opencv imshow的图像,使用MobaXterm则正常显示X3的摄像头图像
RDK X3多媒体
术语约定(https://developer.horizon.cc/documents_rdk/multimedia_development/overview#terminology)
缩写 | 全称 | 解释 |
---|---|---|
VIN | Video IN | 包含视频处理接入、图像信号处理器、畸变矫正和防抖处理,接收来自sensor的数据并处理,也可以直接接收内存中的图像数据 |
VPS | Video Process System | 包含图像旋转、图像裁剪、缩放功能,可对同一种输入源输出不同分辨率的图像。输入源可以是VIN模块,也可以是内存中的图像数据 |
VENC | Video Encode | VENC编码模块支持H.264/H.265/JPEG/MJPEG编码,VPS模块处理后的数据可通过编码模块按不同协议编码做码流输出 |
VDEC | Video Decode | VDEC解码模块支持H.264/H.265/JPEG/MJPEG解码,可对已编码的码流进行解码,交给VPS模块做进一步处理,输出到VOT模块进行显示 |
VPU | Video Processing Unit | 视频处理单元,完成视频的编解码功能 |
JPU | JPEG Processing Unit | JPEG 图片处理单元,完成JPEG、MJPEG的编解码功能 |
VOT | Video Output | 视频输出模块接收VPS、VDEC的图像数据,可输出到显示设备 |
VIO | Video IN/OUT | 视频输入、输出,包括VIN和VOT模块 |
MIPI | Mobile Industry Processor Interface | 移动产业处理器接口 |
CSI | Camera Serial Interface | 相机串行接口。CSI接口与DSI接口同属一门,都是MIPI(移动产业处理器接口联盟)制定的一种接口规范 |
DVP | Digital Video Port | 数字视频端口 |
SIF | Sensor Interface | sensor接口,用来接收mipi、dvp或者内存的图像数据 |
ISP | Image Signal Processor | 图像信号处理器,完成图像的效果调校 |
LDC | Lens Distortion Correction | 镜头畸变校正 |
DIS | Digital Image Stabilizer | 数字图像稳定 |
DWE | Dewarp Engine | 畸变矫正引擎,主要是将LDC和DIS集成在一起,包括LDC的畸变矫正和DIS的统计结果 |
IPU | Image Process Unit | 图像信号处理单元,支持图像的旋转、图像裁剪、缩放功能 |
GDC | Geometrical Distortion Correction | 几何畸变矫正 |
PYM | Pyramid | 图像金字塔 |
OSD | On Screen Display | 视频图像叠层显示 |
BPU | Brain Process Unit | 地平线机器人自主研发的可编程AI加速引擎 |
HAL | Hardware Abstraction Layer | 硬件抽象层 |
FW | Firmware | 固件 |
Sensor | Sensor | 如不做特别说明,特指CMOS图像传感器 |
USB推理函数解释
1 | import sys |
1 | def draw_bboxs(image, bboxes, classes=get_classes()): |
1 | def get_display_res(): |
代码
1 | # Get HDMI display object |
1 | # 创建 FcosPostProcessInfo_t 对象 |
1 | for i in range(len(models[0].outputs)): |
主循环
1 | while True: |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Turin's Blog!