ubuntu下利用Qt添加相機設備并運行arm程序

一、編譯x86-64平臺的opencv demo

緊接上一篇,我電腦里現在同時存在兩個版本的opencv庫,一個是基于x86-64平臺的3.4.11庫,一個是基于arm平臺的4.7.0庫,現在我正常運行opencv的demo,直接報錯:沒有找到oencv4.7.0的庫,這是因為之前編譯arm架構的opencv 4.7.0的庫時,在/usr/local/lib下生成了4.7.0版本的cmake文件夾,而opencv的demo下的CMakeisets.txt里的語句:find_package(OpenCV REQUIRED)會搜索當前opencv目錄下的.cmake文件,cmake文件夾下存在該文件:

這里要做的就是把/uar/local/lib下的cmake文件夾刪除即可。

find_package()的具體搜索方法見以下鏈接:

【CMake】find_package介紹-定位外部依賴_findpackage config模式-CSDN博客

?常規的opencv demo對應的CMakeLIsts.txt語句:

cmake_minimum_required( VERSION 3.1 )# 聲明一個 cmake 工程
project( main )# 設置編譯模式
set( CMAKE_BUILD_TYPE "Release" )#添加OPENCV庫
#指定OpenCV版本,代碼如下
#find_package(OpenCV 3.3 REQUIRED)
#如果不需要指定OpenCV版本,代碼如下
find_package(OpenCV REQUIRED)#添加OpenCV頭文件
include_directories(${OpenCV_INCLUDE_DIRS})#顯示OpenCV_INCLUDE_DIRS的值
#message(${OpenCV_INCLUDE_DIRS})# 添加一個可執行程序
# 語法:add_executable( 程序名 源代碼文件 )
add_executable( main main.cpp )# 將庫文件鏈接到可執行程序上
target_link_libraries( main  ${OpenCV_LIBS})install(TARGETS main DESTINATION /home/user)

二、編譯arm版本的qt

具體的編譯方法建議下鏈接:

為RK3568或RK3288開發板創建交叉編譯環境{采用amd64的ubuntu系統配置交叉編譯arm64開發環境}(保姆級包括安裝QT)超詳細記錄版_rk3568交叉編譯工具鏈-CSDN博客

qt ubuntu 20.04 交叉編譯_ubuntu qt交叉編譯-CSDN博客

配置好arm編譯器后,用qt打開opencv工程,編譯一直報opencv函數的錯誤,這是因為find_package()找不到具體的opencv路徑,因為我的opencv不是放在/usr目錄下,此時只需要在fina_package()前面加上 :

set(OpenCV_DIR /home/vensin/workspace/623/opencv/opencv-4.7.0/build)

即可編譯成功,注意:此時運行qt是無法直接得出結果的,因為在x86-64平臺無法運行arm程序。

cmake_minimum_required( VERSION 3.1 )# 聲明一個 cmake 工程
project( main )# 設置編譯模式
set( CMAKE_BUILD_TYPE "Release" ) #Debug Release#添加OPENCV庫
#指定OpenCV版本,代碼如下
#find_package(OpenCV 3.3 REQUIRED)
#如果不需要指定OpenCV版本,代碼如下
set(OpenCV_DIR /home/vensin/workspace/623/opencv/opencv-4.7.0/build)
find_package(OpenCV REQUIRED)#添加OpenCV頭文件
include_directories(${OpenCV_INCLUDE_DIRS})#顯示OpenCV_INCLUDE_DIRS的值
#message(${OpenCV_INCLUDE_DIRS})# 添加一個可執行程序
# 語法:add_executable( 程序名 源代碼文件 )
add_executable( main main.cpp )# 將庫文件鏈接到可執行程序上
target_link_libraries( main  ${OpenCV_LIBS})

三、添加設備并調試

具體添加相機設備的方法如下:

3:Ubuntu上配置QT交叉編譯環境并編譯QT程序到Jetson Orin Nano(ARM)_ubuntu安裝qt jeston orin nano opencv-CSDN博客

這里有幾個細節要注意:

1.需要的話要在GDB server executable中加入/usr/bin/gdbserver:

2.必須在CMakeLists.txt 中加入:

install(TARGETS main DESTINATION /home/user)

否則Deploy All Projects會失敗(這里的/home/user是rk3568板子上的路徑);

3.下圖中的Build & Run 、 運行->運行配置等設置如下(mrdvConfig是設備名):

cmake_minimum_required( VERSION 3.1 )# 聲明一個 cmake 工程
project( main )# 設置編譯模式
set( CMAKE_BUILD_TYPE "Release" ) #Debug Release#添加OPENCV庫
#指定OpenCV版本,代碼如下
#find_package(OpenCV 3.3 REQUIRED)
#如果不需要指定OpenCV版本,代碼如下
set(OpenCV_DIR /home/vensin/workspace/623/opencv/opencv-4.7.0/build)
find_package(OpenCV REQUIRED)#添加OpenCV頭文件
include_directories(${OpenCV_INCLUDE_DIRS})#顯示OpenCV_INCLUDE_DIRS的值
#message(${OpenCV_INCLUDE_DIRS})# 添加一個可執行程序
# 語法:add_executable( 程序名 源代碼文件 )
add_executable( main main.cpp )# 將庫文件鏈接到可執行程序上
target_link_libraries( main  ${OpenCV_LIBS})install(TARGETS main DESTINATION /home/user)

4.這里如果將qt的編譯模式修改為Debug則會出現opencv庫錯誤的問題,這是因為之前在編譯arm的opencv庫的時候選擇的是Release模式,所以如果要調試,則需要重新編譯一份Debug模式的opencv的arm庫。

做完以上步驟以后,運行程序會在板子的指定路徑下生成可執行文件。

四、opencv庫報錯的問題

在用qt編譯arm程序時,將qt編譯器設置為Debug模式會報libopencv_gapi.so.4.7.0wrong format的錯誤,我還以為是opencv編譯的時候

-D CMAKE_BUILD_TYPE=RELEASE

模式為Release的問題,于是我就把?-D CMAKE_BUILD_TYPE=DEBUG又編譯了一遍opencv庫,尷尬的是沒用,兩者編譯出來的庫是一樣的,并沒有release和debug的區別,只能繼續找問題,既然庫沒問題,那就看是不是環境變量的問題:

這個LD_LIBRARY_PATH里面加入了當前opencv的include目錄和lib,刪掉include就可以了(lib后面我也刪了)。

五、rk3568平臺的遠程調試

點擊QT的調試,發現報錯:

無法對板子程序進行調試。

后續解決辦法為:

1.安裝gdb-multiarch:

sudo apt-get install gdb-multiarch

2.創建新的Debugger, Path選擇/usr/bin/gdb-multiarch,Name設為arm debug:

?arm平臺的kits->Debugger選擇上文創建的arm debug即可。

接下來調試成功:

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/86505.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/86505.shtml
英文地址,請注明出處:http://en.pswp.cn/web/86505.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

貪心算法理論與實踐總結

文章目錄 一、貪心算法的基本概念二、貪心算法的適用條件三、貪心算法的設計步驟四、貪心算法的經典應用場景1. 區間調度問題2. 背包問題3. 最小生成樹(MST)4. 單源最短路徑(Dijkstra算法)5. 霍夫曼編碼6. 零錢兌換 五、貪心算法的…

在 AWS 上重構數據中臺,這家出海企業選擇了數棧

2024年,袋鼠云接到了一個不小的挑戰。 一家貨幣交易所的技術負責人在通話里直接說:“我們現在業務都跑在 AWS(亞馬遜云平臺) 上了,你們的產品(數棧大數據平臺)能不能不改代碼直接跑在 AWS 上&a…

STM32CubeIDE中文注釋變亂碼終極解決方案:3步設置永久解決錕斤拷問題!

STM32CubeIDE中文注釋變亂碼終極解決方案:3步設置永久解決錕斤拷問題! 前言簡述問題STM32CubeIDE的設置STM32CubeIDE軟件的設置當前工程設置 最重要的一環——添加環境變量重要秘方具體做法 前言 你是否在STM32CubeIDE中遇到過這樣的崩潰場景&#xff1…

Windows VMWare Centos環境下安裝Docker并配置MySql

虛擬機安裝 官網下載Centos Stream 10系統鏡像 安裝了Minimal版,Terminal中粘貼、復制指令不方便,又新建了虛擬機,安裝GUI版 終端輸入指令報錯修復 輸入指令報錯:failed to set locale defaulting to C.UTF-8,安裝語言…

AI能力集成設計與Prompt策略

AI能力集成設計與Prompt策略 在智能客服系統中引入AI能力,必須建立一套架構化、可擴展的AI服務集成體系,并根據不同業務場景制定Prompt策略,從而實現穩定、精準、高效的AI響應能力。 AI能力集成的關鍵組件設計 AI能力集成架構的核心在于通…

深入剖析 CVE-2021-3560 與 CVE-2021-4034:原理、區別與聯系

CVE-2021-3560 和 CVE-2021-4034 是 2021 年曝光的兩個 Linux 本地權限提升漏洞,均涉及 Polkit 組件。由于它們影響廣泛且利用門檻較低,迅速引起安全社區關注。本文將深入分析這兩個漏洞的技術原理、影響范圍、區別與聯系,并結合實際案例&…

Jupyter Notebook 完全指南:從入門到生產力工具

Jupyter Notebook 完全指南:從入門到生產力工具 Jupyter Notebook 已成為數據科學、機器學習和科研領域的標準工具,它完美結合了代碼、文檔和可視化功能。本文將帶您全面了解 Jupyter 的強大功能,并展示如何將其轉化為您的超級生產力工具。 …

HKDF密鑰派生原理與應用詳解

HKDF(HMAC-Based Key Derivation Function)是一種基于 HMAC(Hash-based Message Authentication Code)的密鑰派生函數,用于從原始密鑰材料(如共享密鑰、隨機數等)生成多個加密密鑰(如…

SpringBoot + MyBatis 事務管理全解析:從 @Transactional 到 JDBC Connection 的旅程

SpringBoot MyBatis 事務管理全解析:從 Transactional 到 JDBC Connection 的旅程 一、JDBC Connection:事務操作的真正執行者1.1 數據庫事務的本質1.2 Spring 與 Connection 的協作流程 二、從 Transactional 到 JDBC Connection 的完整鏈路2.1 Spring…

Wpf之應用圖標的修改!

前言 Wpf之應用圖標的修改! 一、修改步驟 1、準備好ico圖片。 2、右鍵項目》點擊屬性 3、找到win32資源點擊 4、點擊瀏覽找到ioc圖標 5、點擊運行程序 6、右鍵項目點擊打開在資源管理器中打開 找到以下路徑 在該路徑下能看到.exe文件的圖標已經改成你想要的…

Spring Boot整合Redis指南

一、環境準備 在開始整合前&#xff0c;請確保已完成以下準備工作&#xff1a; 已安裝Redis服務&#xff08;安裝指南&#xff09;創建好Spring Boot項目 二、添加依賴 在項目的pom.xml中添加以下依賴&#xff1a; <!-- Redis核心依賴 --> <dependency><gr…

Re-攻防世界

easyEZbaby_app Jadx 這個文件一般是窗口界面&#xff0c;點擊中間的一般就是主函數 Obj1是用戶名&#xff0c;obj2是密碼 用戶名 public boolean checkUsername(String str) { if (str ! null) { try { if (str.length() ! 0 &&…

矩陣題解——搜索二維矩陣 II【LeetCode】

240. 搜索二維矩陣 II 1.1 核心思想 問題描述&#xff1a;給定一個 m x n 的二維矩陣&#xff0c;矩陣的每一行從左到右遞增&#xff0c;每一列從上到下遞增。判斷目標值 target 是否存在于矩陣中。解決思路&#xff1a; 從矩陣的右上角&#xff08;或左下角&#xff09;開始搜…

dockerfile文件詳解之基礎語法

dockerfile文件詳解之基礎語法 一般而言 Dockerfile 可以分為4個部分 &#xff08;1&#xff09;基礎鏡像信息&#xff0c; &#xff08;2&#xff09;維護者信息 &#xff08;3&#xff09;鏡像操作命令 &#xff08;4&#xff09;啟動時執行指令 1-注釋 用 # 來進行注…

WebFuture:獨立一級域名nginx取消配置Secure屬性的問題

問題分析&#xff1a; 部分站群站點使用了獨立一級域名&#xff0c;但是前臺問卷調查等模塊無法提交&#xff0c;排查是由于主站啟用了https&#xff0c;配置了cookies的Secure屬性是true&#xff0c;但是子站的獨立一級域名沒有使用https&#xff0c;所以瀏覽器不能寫入cooki…

【網站內容安全檢測】之3:獲取所有外部域名訪問后圖像

Go語言調用Chrome瀏覽器去進行截圖的操作&#xff0c;對電腦的性能要求比較高&#xff0c;所以速度比較有限&#xff0c;但是目前來看這種方式可以最佳的去獲取網頁加載后的結果。 main.go package mainimport ("context""errors""flag""…

華曦達港股IPO遞表,AI Home生態構建智能生活新藍圖

在智能家居逐漸普及的當下&#xff0c;華曦達打造的AI Home生態為用戶提供了更智能、便捷的生活解決方案&#xff0c;在行業中展現出獨特優勢。 華曦達AI Home生態由AI Home系統平臺、AI Home基礎設施、AI Home設備以及可連接外部設備的開放式設備矩陣構成&#xff0c;是一個開…

java+vue+SpringBoo智慧農業專家遠程指導系統(程序+數據庫+報告+部署教程+答辯指導)

源代碼數據庫LW文檔&#xff08;1萬字以上&#xff09;開題報告答辯稿ppt部署教程代碼講解代碼時間修改工具 技術實現 開發語言&#xff1a;后端&#xff1a;Java 前端&#xff1a;vue框架&#xff1a;springboot數據庫&#xff1a;mysql 開發工具 JDK版本&#xff1a;JDK1.…

免費AI助手工具深度測評:Claude4本地化部署與實戰應用指南

免費AI助手工具深度測評&#xff1a;Claude4本地化部署與實戰應用指南 AI無限對話免費Rovo工具Claude4碾壓cursor和augment 前言 在AI工具日益普及的今天&#xff0c;大多數高質量的AI助手都需要付費訂閱或有使用限制。然而&#xff0c;最近發現了一款基于Claude 4的免費AI助手…

MCP瀏覽器工具:playwright、chrome-mcp

參考&#xff1a; https://github.com/microsoft/playwright-mcp https://github.com/hangwin/mcp-chrome chrome-mcp安裝需要額外安裝成瀏覽器插件 用cherrystudio v1.4.5測試 mcp配置&#xff1a; "chrome-mcp-server": {"name": "chrome-mcp-serve…