【详解】RV1106移植opencv-mobile库


文章目录


前言

硬件:瑞芯微Rv1106【Luckfox Pro\Max Pico、网线一根、USB线、摄像头
软件:ubuntu 20.4、MobaXterm、SocToolKit
编译器:arm-rockchip830-linux-uclibcgnueabihf
opencv包:本文主要是使用nihui
开发板使用镜像buildroot

一、烧入镜像

具体烧入方法

1.打开SocToolKit.exe工具、并且选择RV1106芯片

2.首先先按着板子的boot按键

3.再用usb连接好电脑和开发板【遇到过不能传输的情况,检查usb线是不是只有充电,而不能传输数据】

4.等软件识别到板子之后,把对应的镜像文件烧入

二、编译项目

1.创建项目文件



代码如下

bash 复制代码
set(CMAKE_C_COMPILER "/home/wj/toolchain/Linux/RV1106/arm-rockchip830-linux-uclibcgnueabihf/bin/arm-rockchip830-linux-uclibcgnueabihf-gcc")
set(CMAKE_CXX_COMPILER "/home/wj/toolchain/Linux/RV1106/arm-rockchip830-linux-uclibcgnueabihf/bin/arm-rockchip830-linux-uclibcgnueabihf-g++")

project(opencv-mobile-test)
cmake_minimum_required(VERSION 3.5)
set(CMAKE_CXX_STANDARD 11)

set(OpenCV_DIR "${CMAKE_CURRENT_SOURCE_DIR}/opencv-mobile-4.8.1-luckfox-pico/lib/cmake/opencv4")
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})

add_executable(opencv-mobile-test main.cpp)

target_link_libraries(opencv-mobile-test ${OpenCV_LIBS})
cpp 复制代码
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>

#include <unistd.h>   // sleep()

int main()
{
    cv::VideoCapture cap;
    cap.set(cv::CAP_PROP_FRAME_WIDTH, 320);
    cap.set(cv::CAP_PROP_FRAME_HEIGHT, 240);
    cap.open(0);

    const int w = cap.get(cv::CAP_PROP_FRAME_WIDTH);
    const int h = cap.get(cv::CAP_PROP_FRAME_HEIGHT);
    fprintf(stderr, "%d x %d\n", w, h);

    cv::Mat bgr[9];
    for (int i = 0; i < 9; i++)
    {
        cap >> bgr[i];

        sleep(1);
    }

    cap.release();

    // combine into big image
    {
        cv::Mat out(h * 3, w * 3, CV_8UC3);
        bgr[0].copyTo(out(cv::Rect(0, 0, w, h)));
        bgr[1].copyTo(out(cv::Rect(w, 0, w, h)));
        bgr[2].copyTo(out(cv::Rect(w * 2, 0, w, h)));
        bgr[3].copyTo(out(cv::Rect(0, h, w, h)));
        bgr[4].copyTo(out(cv::Rect(w, h, w, h)));
        bgr[5].copyTo(out(cv::Rect(w * 2, h, w, h)));
        bgr[6].copyTo(out(cv::Rect(0, h * 2, w, h)));
        bgr[7].copyTo(out(cv::Rect(w, h * 2, w, h)));
        bgr[8].copyTo(out(cv::Rect(w * 2, h * 2, w, h)));

        cv::imwrite("out.jpg", out);
    }

    return 0;
}

编译完成之后会出现一个可执行文件:

三、移植

将网线连接开发板,并且确保开发板和本地电脑ubuntu处于同一网段内,我的

在电脑ubantu上使用scp传输编译处理的可执行文件opencv-mobile-test

bash 复制代码
sudo scp -r opencv-mobile-test/ root@192.168.104.114:/root/

可能会遇到的报错:Permission denied (publickey).lost connection

解决办法:sudo vi /etc/ssh/sshd_config

传输成功之后,板子上首先进入root权限 su root,输入账号root,密码root。

进入到root/目录,然后将摄像头插在板子上【注意连接处不要插反】。

四、运行文件

1.开发板连接摄像头后上电,启动后释放摄像头资源:

bash 复制代码
killall rkipc

2.运行程序

bash 复制代码
./opencv-mobile-test


可能遇到的问题:【镜像如果不是我上面的,应该有问题,我测试了aplinelinx和ubuntu镜像,结果都是输出以下结果,使用chmod +x ./opencv-mobile-test,也不能正常加载,可能测试的时候有其他问题】

解决方法:换成我推荐的镜像文件

3.输出结果

为了很好的可视化输出结果,将out.jpg发送到本地ubuntu上,使用命令:【注意替换自己IP和地址】
scp out.jpg wj@192.168.104.118:/home/wj/Desktop

五、总结

先完成opencv的移植,后续使用rknpu去实时推理摄像头图像

相关推荐
FIN666815 小时前
底部蓄力,静待花开——清越科技的韧性与曙光
大数据·人工智能·物联网
Gofarlic_OMS15 小时前
UG/NX许可证管理高频技术问题解答汇编
java·大数据·运维·服务器·汇编·人工智能
一念杂记15 小时前
SKILL到底应该怎么写?10 分钟快速掌握 AI 智能体技能开发核心技巧
人工智能·openai·ai编程
AI刀刀15 小时前
手机AI怎么导出pdf
人工智能·ai·智能手机·pdf·deepseek·ds随心转
财迅通Ai15 小时前
天音控股披露最新财报:拥抱AI融合趋势 数智化转型赋能新零售
人工智能·零售·天音控股
tangweiguo0305198715 小时前
AI文生图完整实战:基于阿里云百炼通义万相
人工智能·langchain
汽车仪器仪表相关领域15 小时前
Kvaser Memorator Professional HS/LS:高速 + 低速双通道 CAN 总线记录仪,跨系统诊断的专业级解决方案
网络·人工智能·功能测试·测试工具·安全·压力测试
开心的AI频道15 小时前
如何看待 OpenAI 近期小范围内测的 GPT-image-2 生图模型?
人工智能·gpt
西陵15 小时前
如何实现 Claude 生成式 UI?一套可落地的工程方案
前端·人工智能·ai编程
LONGZETECH15 小时前
新能源汽车专业升级|仿真教学软件科学布局指南
人工智能·物联网·架构·汽车·新能源汽车仿真教学软件