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

news2024/10/2 12:31:17

目录

  • 1、ROCK 3C和树莓派摄像头模块V2介绍
  • 2、ROCK 3C在rsetup开启支持
  • 3、测试指令
  • 4、编译Opencv
    • 4.1 增加swap,确保内存够用
    • 4.2 安装依赖和下载opencv
    • 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设备的

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、测试指令

# 成功
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,确保内存够用

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

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,在当前目录解压即可

cd opencv4.5.0
mkdir build
cd build

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

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进行编译

sudo make -j4

在这里插入图片描述

等待编译完成,进行安装

sudo make install

4.3 编译参考链接

https://mp.weixin.qq.com/s/3v65UUPK0sYsuEulTngxvw
https://blog.csdn.net/Datapad/article/details/115965665

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

查看信息:

在这里插入图片描述

在这里插入图片描述

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()

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1979242.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

刷题篇 - 01

目录 题目一: 题目二: 题目三: 题目四: 题目五: 题目六: 题目七: 题目一: 387. 字符串中的第一个唯一字符 - 力扣(LeetCode) public int firstUniqC…

订单定时状态处理业务(SpringTask)

文章目录 概要整体架构流程技术细节小结 概要 订单定时状态处理通常涉及到对订单状态进行定期检查,并根据订单的状态自动执行某些操作,比如关闭未支付的订单、自动确认收货等. 需求分析以及接口设计 需求分析 用户下单后可能存在的情况: …

鸿蒙(API 12 Beta2版)NDK开发【内存管理purgeable内存开发指导】

场景介绍 HarmonyOS提供Purgeable Memory内存管理机制,开发者可以使用相关接口创建PurgeableMemory对象,从而管理purgeable内存。 开发者可以通过本指导了解在HarmonyOS应用中,如何使用Native层相关接口操作purgeable内存。功能包括purgeab…

Jupyter-Notebook常用操作看这一篇就够啦

来源: “码农不会写诗”公众号 链接:Jupyter-Notebook常用操作看这一篇就够啦 文章目录 01 概括02 快捷键总结03 运行外部python文件04 魔法命令4.1 运行计时4.2 查看变量与函数4.3 其它常用指令 书接上文 Jupyter-Notebook是一个基于 Web 的交互式开发环…

第十四节、受伤、死亡的逻辑和动画

一、受伤的动画效果 1齿轮控制当前动画图层的权重 2、层级 当前动画层为add,所以不会覆盖之前的动画层,而是添加一个动画层 3、受伤闪烁 调用颜色的值,实现受伤闪烁 4、录制动画 点击时间轴,插入关键帧 伤害图层选择add&…

2024华数杯C题解题思路、参考论文已出(无偿分享)~

C题:老外游中国 “数模加油站”团队出品~ 问题1: 解题思路: 1、数据准备: 导入352个城市的csv文件,提取每个城市中的100个景点的信息。 将每个景点的评分数据提取出来,形成一个包含35200个景点评分的列…

centos虚拟机restart网络后隔一会断联

1. 前言 不知道各位有没有遇到过虚拟机网络设置的坑,往往前一段时间用的好好的,突然网络又不行了无法连接外部网络,而且使用 service network restart 一瞬间可以,但是过一会就断连了… 2. 解决方案 根据对虚拟机网络的学习了解…

五、一个quad同时支持pcie和sfp两种高速接口的ref时钟配置

项目描述 上位机将截图数据通过 XDMA 写入到 FPGA 侧的 DDR 内存区域 1 中通过 axi_lite 接口给 axi_read_start 信号,通知 AXI_read 模块启动读取数据,然后通过 GTP TX 模块发送出去。经过光纤回环,GTP RX 端接收到数据,送给 AX…

今天的一件小事,亲身感受:付费是提高效率的重要途径

今天需要修改一个单页网站源码,有一个小问题困住我3个小时了。 毕竟我也不是专业的,没有系统学习过这些,搜答案都不知道怎么搜哈哈 吃过午饭,想着不能这么耗下去了,于是及时去了某宝,找到一个修改代码的 …

搭建nexus上传jar包,并结合jenkins运行项目

一、搭建nexus 1、docker拉取镜像 需要将docker原更新一下 https://blog.csdn.net/qx020814/article/details/140908006?spm1001.2014.3001.5502 docker pull sonatype/nexus3 创建nexus挂载文件、增加权限: mkdir docker_nexus3 mkdir docker_nexus3/nexus-data c…

TreeSize:免费的磁盘清理与管理神器,解决C盘爆满的燃眉之急

目录 TreeSize:免费的磁盘清理与管理神器,解决C盘爆满的燃眉之急 一、TreeSize介绍 二、下载安装TreeSize 2.1、下载地址 2.2、下载步骤 ​2.3、安装步骤 三、professional版的TreeSize试用 3.1、分析磁盘空间 3.2、显示拓展名统计信息 3.3、显…

将本地的业务写成成可供RPC远程调用的方法

第一步:首先我们先定义proto文件,这些proto文件将会为远程调用者提供调用的方法,为login方法。 2.重写UserServiceRpc类中的Login方法。 在Login中做的操作主要是,得到requst里面的参数,然后调用本地的Login方法&#…

可解释性终极追问,什么才是第一性解释?20篇CCF-A+ICLR论文给你答案

一、前言 长期以来,我们团队一直在思考可解释性领域的一个终极问题,即什么才是解释性领域的第一性原理?所谓第一性原理,目前没有一个被广泛接受的框架,世上本无路,我们需要逐渐去定义这样一个路。我们需要在…

Linux系统中的高级内核模块调试技术

引言 在Linux系统中进行高级内核模块开发时,调试是不可或缺的重要环节。调试技术能够帮助开发人员发现和解决代码中的错误和问题,提高开发效率和代码质量。本文将深入探讨Linux系统中高级内核模块调试的技术和方法,包括常用的调试工具、调试…

JAVA—面向对象编程高级

学习了一定基础后,开始更加深入的学习面向对象,包含static,final两个关键字,面向对象编程三大特征之继承和多态。以及对于抽象类,内部类,接口,枚举,泛型的学习。 目录 1.static (…

cdn 内容分发网络

cdn 内容分发网络 CDN的全称是Content Delivery Network,即内容分发网络。 其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输得更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层…

Milvus与Zilliz Cloud:向量数据库高可用性的双重飞跃

向量数据库高可用性的重要性及其在现代数据分析中的关键作用 在数据爆炸式增长的今天,企业对于高效、准确地处理和分析大规模数据集的需求日益迫切。尤其是在人工智能、机器学习、图像识别、自然语言处理等领域,向量数据库因其对高维数据的高效存储与检索能力,成为了不可或…

【数据结构算法经典题目刨析(c语言)】括号匹配问题(图文详解)

💓 博客主页:C-SDN花园GGbond ⏩ 文章专栏:数据结构经典题目刨析(c语言) 目录 一、题目描述 二、解题思路 三、代码实现 一、题目描述 二、解题思路 问题要求将三种类型括号匹配,其中包括顺序匹配和数量匹配 使用栈的后进先…

Linux压缩命令:zip命令详解

目录 一、概述 二、术语 三、基本语法 1、语法 2、常用选项 四、选项和示例 1. -r - 递归压缩目录及其子目录。 2. -j - 只加入文件而不保留目录结构。 3. -m - 压缩后从文件系统中删除原文件。 4. -u - 更新已存在的 ZIP 文件中的文件。 5. -q - 静默模式&#xff…

C语言指针(2)

今天我们接着前两天的内容继续讲解 一、数组名的理解 1、&arr[0]与arr 有时候我们需要获取数组首元素,有两种方法可以获取。 使用这两种方法都可以获得数组首元素&arr[0],arr。 int main() {int arr[10] { 1,2,3,4,5,6,7,8,9,10};printf(&…