Radxa ROCK 3C开发板编译Opencv,支持调用树莓派摄像头模块V2

目录

  • [1、ROCK 3C和树莓派摄像头模块V2介绍](#1、ROCK 3C和树莓派摄像头模块V2介绍)
  • [2、ROCK 3C在rsetup开启支持](#2、ROCK 3C在rsetup开启支持)
  • 3、测试指令
  • 4、编译Opencv
    • [4.1 增加swap,确保内存够用](#4.1 增加swap,确保内存够用)
    • [4.2 安装依赖和下载opencv](#4.2 安装依赖和下载opencv)
    • [4.3 编译参考链接](#4.3 编译参考链接)
  • 5、使用opencv调用树莓派摄像头模块V2

1、ROCK 3C和树莓派摄像头模块V2介绍

ROCK 3C 是一款基于 RK3566 SoC 开发的SBC。

搭载了四核 Cortex-A55 ARM 处理器,板载 32 位 LPDDR4 内存。

主板预览图如下:

树莓派原装摄像头 V2 版是一款基于索尼 IMX219 的 800 万像素摄像头模块,通过CSI接口进行连接。

2、ROCK 3C在rsetup开启支持

没有开启支持前,是检测不到对应的video设备的

bash 复制代码
radxa@rock-3c:~$ ls /dev/video*
/dev/video-dec0  /dev/video-enc0

rsetup使用办法:
https://docs.radxa.com/rock3/rock3c/os-config/rsetup#rsetup

在终端输入rsetup,配置设备树 Overlays,空格选中Enable Raspberry Pi Camera v2

回到终端就可以检测到

3、测试指令

bash 复制代码
# 成功
gst-launch-1.0 v4l2src device=/dev/video0 io-mode=4 ! videoconvert ! video/x-raw,format=NV12,width=1920,height=1080 ! jpegenc ! multifilesink location=/home/radxa/test.jpg

执行指令,开始读秒后按下 Ctrl + C即可拍照, 照片路径为 /home/radxa/test.jpg

使用cheese可用


但是pip安装的opencv-contrib-python无法调用

论坛发贴后后,得知需要opencv支持GStreamer ,所以我们通过编译获得一个支持GStreamer opencv

4、编译Opencv

4.1 增加swap,确保内存够用

bash 复制代码
radxa@rock-3c:~$ cd /opt
radxa@rock-3c:/opt$ sudo mkdir image
[sudo] radxa 的密码:
radxa@rock-3c:/opt$ sudo touch swap
radxa@rock-3c:/opt$ sudo dd if=/dev/zero of=/opt/image/swap bs=1024 count=2048000
记录了2048000+0 的读入
记录了2048000+0 的写出
2097152000字节(2.1 GB,2.0 GiB)已复制,101.993 s,20.6 MB/s

radxa@rock-3c:/opt$ sudo mkswap /opt/image/swap
mkswap: /opt/image/swap: insecure permissions 0644, 0600 suggested.
Setting up swapspace version 1, size = 2 GiB (2097147904 bytes)
no label, UUID=3d7f188b-76f5-4280-a40a-0a2a4ac51c56
radxa@rock-3c:/opt$ free -m
               total        used        free      shared  buff/cache   available
内存:       1983         381          21           4        1580        1533
交换:        991           1         990

radxa@rock-3c:/opt$ sudo vim /etc/fstab

4.2 安装依赖和下载opencv

bash 复制代码
sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev python3.9-dev python3-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev
sudo apt install gstreamer1.0*
sudo apt install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev

opencv4.5包: https://pan.baidu.com/s/1DpXXZu_FRVVxTNJ9vlzrkw 提取码: 2rxp

我这里使用的是opencv4.5,在当前目录解压即可

bash 复制代码
cd opencv4.5.0
mkdir build
cd build

执行编译,DWITH_GSTREAMER=ON就是要添加的支持

bash 复制代码
sudo cmake -DCMAKE_BUILD_TYPE=RELEASE \
-DCMAKE_INSTALL_PREFIX=/usr/local \
-DPYTHON_DEFAULT_EXECUTABLE=$(which python3.9) \
-DPYTHON3_EXECUTABLE=$(which python3.9) \
-DWITH_GSTREAMER=ON \
-DPYTHON3_INCLUDE_DIR=/usr/include/python3.9 \
-DPYTHON3_INCLUDE_DIR2=/usr/include/aarch64-linux-gnu/python3.9 \
-DPYTHON3_LIBRARY=/usr/lib/aarch64-linux-gnu/libpython3.9.so \
-DPYTHON3_NUMPY_INCLUDE_DIRS=/usr/lib/python3.9/dist-packages/numpy/core/include/ \
-DBUILD_DOCS=OFF \
-DBUILD_EXAMPLES=OFF \
-DBUILD_TESTS=OFF \
-DBUILD_PERF_TESTS=OFF \
..

用make进行编译

bash 复制代码
sudo make -j4

等待编译完成,进行安装

bash 复制代码
sudo make install

4.3 编译参考链接

https://mp.weixin.qq.com/s/3v65UUPK0sYsuEulTngxvw

https://blog.csdn.net/Datapad/article/details/115965665

5、使用opencv调用树莓派摄像头模块V2

查看信息:

bash 复制代码
import cv2

pipeline = "v4l2src ! video/x-raw, width=640, height=480, framerate=15/1 ! videoconvert ! videoscale ! video/x-raw, width=640, height=480 ! appsink"
# cap = cv2.VideoCapture(pipeline, cv2.CAP_V4L) 
cap = cv2.VideoCapture(pipeline, cv2.CAP_GSTREAMER) 

while True:
    ret, frame = cap.read()
    if ret:
        cv2.imshow("frame", frame)
    
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()
相关推荐
小柯博客38 分钟前
从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(十二)
c语言·stm32·单片机·嵌入式硬件·php·嵌入式
殇者知忧2 小时前
【论文笔记】若干矿井粉尘检测算法概述
深度学习·神经网络·算法·随机森林·机器学习·支持向量机·计算机视觉
SY师弟3 小时前
51单片机基础部分——独立按键检测
单片机·嵌入式硬件·51单片机
Mapleay4 小时前
FMC STM32H7 SDRAM
stm32·单片机·嵌入式硬件
丁先生qaq4 小时前
热成像实例分割电力设备数据集(3类,838张)
人工智能·计算机视觉·目标跟踪·数据集
易知嵌入式小菜鸡4 小时前
STM32CubeMX-H7-19-ESP8266通信(中)--单片机控制ESP8266实现TCP地址通信
stm32·单片机·嵌入式硬件
乄夜5 小时前
嵌入式面试高频(5)!!!C++语言(嵌入式八股文,嵌入式面经)
c语言·c++·单片机·嵌入式硬件·物联网·面试·职场和发展
DisonTangor5 小时前
【小红书拥抱开源】小红书开源大规模混合专家模型——dots.llm1
人工智能·计算机视觉·开源·aigc
小柯博客8 小时前
从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
c语言·stm32·单片机·嵌入式硬件·物联网
云山工作室9 小时前
一种停车场自动停车导航器的设计(论文+源码)
单片机·嵌入式硬件·毕业设计·毕设