文章目錄
- 前言
- 一、燒入鏡像
- 二、編譯項目
- 1.創建項目文件
- 三、移植
- 四、運行文件
- 五、總結
前言
硬件:瑞芯微Rv1106【Luckfox Pro\Max Pico、網線一根、USB線、串口助手、攝像頭
軟件:ubuntu 20.4
編譯器:arm-rockchip830-linux-uclibcgnueabihf
opencv包:本文主要是使用nihui
開發板使用鏡像:buildroot
一、燒入鏡像
具體燒入方法
1.打開SocToolKit.exe工具、并且選擇RV1106芯片
2.首先先按著板子的boot按鍵
3.再用usb連接好電腦和開發板【遇到過不能傳輸的情況,檢查usb線是不是只有充電,而不能傳輸數據】
4.等軟件識別到板子之后,把對應的鏡像文件燒入
二、編譯項目
1.創建項目文件
代碼如下
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})
#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
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.開發板連接攝像頭后上電,啟動后釋放攝像頭資源:
killall rkipc
2.運行程序
./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去實時推理攝像頭圖像