在arm 64 環境下使用halcon算法

背景:

halcon,機器視覺領域神一樣得存在,在windows上,應用得特別多, 但是arm環境下使用得很少。那如何在arm下使用halcon呢。按照官方說明,arm下只提供了運行時環境,并且需要使用價值一萬多人民幣的硬件加密狗才可以運行,但眾所周知,我朝盜版軟件橫行,因此寫下了這篇不道德但是實用的文章。

步驟:

1,

halcon的運行時環境,包括了所有的so庫,但缺少頭文件。要想在arm 下編譯,頭文件,庫文件缺一不可,因此需要將 開發環境的頭文件拷貝到運行時環境下。這里以版本?20.11.1.2 為例。

具備了頭文件和so文件后,再將破解文件進行替換,就可以在arm 下使用halcon算法了。

2,

寫了一個讀二維碼和條碼的 demo ,cmake 配置如下

cmake_minimum_required(VERSION 3.0.0)
project(HalconDemo VERSION 0.1.0)set(TARGET_NAME HalconDemo)set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../include)
link_directories(${CMAKE_CURRENT_SOURCE_DIR}/../lib/aarch64-linux)aux_source_directory(. SRCS )set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}  -static-libstdc++ -fPIC -Wl,--copy-dt-needed-entries -Wno-error=deprecated-declarations -Wno-deprecated-declarations ")add_executable(${TARGET_NAME}  ${SRCS})
#include <iostream>#include <halconcpp/HalconCpp.h>using namespace HalconCpp;
using namespace std;int main(int argc, char **argv)
{// Local iconic variablesHObject ho_barImage, ho_SymbolRegions, ho_codeImage;HObject ho_SymbolXLDs;// Local control variablesHTuple hv_WindowHandle, hv_BarCodeHandle;HTuple hv_DecodedDataStrings, hv_DataCodeHandle, hv_ResultHandles;std::cout << "進入算法" << endl;ReadImage(&ho_barImage, "./image/barCode.jpg");std::cout << "完成讀圖1" << endl;CreateBarCodeModel(HTuple(), HTuple(), &hv_BarCodeHandle);SetBarCodeParam(hv_BarCodeHandle, "element_size_min", 1);SetBarCodeParam(hv_BarCodeHandle, "meas_param_estimation", "true");FindBarCode(ho_barImage, &ho_SymbolRegions, hv_BarCodeHandle, "auto", &hv_DecodedDataStrings);ClearBarCodeModel(hv_BarCodeHandle);for (int i = 0; i < hv_DecodedDataStrings.Length(); i++){std::cout << "barcode" << i << ":" << hv_DecodedDataStrings[i].S() << endl;}ReadImage(&ho_codeImage, "./image/2DCode.bmp");std::cout << "完成讀圖2" << endl;CreateDataCode2dModel("QR Code", HTuple(), HTuple(), &hv_DataCodeHandle);SetDataCode2dParam(hv_DataCodeHandle, "string_encoding", "utf8");FindDataCode2d(ho_codeImage, &ho_SymbolXLDs, hv_DataCodeHandle, HTuple(), HTuple(),&hv_ResultHandles, &hv_DecodedDataStrings);ClearDataCode2dModel(hv_DataCodeHandle);for (int i = 0; i < hv_DecodedDataStrings.Length(); i++){std::cout << "2dcode" << i << ":" << hv_DecodedDataStrings[i].S() << endl;}return 0;
}

3.

執行的時候 只需要將 libhalcon.so.20.11.1 這個文件 拷貝到可執行目錄下即可。

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

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

相關文章

設計高手的秘密武器:5款讓平面作品更出彩的軟件

平面設計是一種迷人而多樣化的藝術形式&#xff0c;它結合了顏色、形狀、排版和創造力&#xff0c;通過圖像和文本傳達信息。市場上有各種各樣的平面設計軟件&#xff0c;選擇合適的設計軟件是成為優秀設計師的重要一步。為了降低軟件成本&#xff0c;大多數設計師會優先使用免…

編譯原理之LL(1)語法分析實驗(附完整C/C++代碼與測試)

一、實驗內容與要求 先從鍵盤讀入要分析的文法&#xff0c;由程序自動構造FIRST、FOLLOW 集以及SELECT集合&#xff0c;判斷是否為LL (1)文法。 分析文法為G[E]&#xff1a; &#xff08;0&#xff09;E→ TE’ &#xff08;1&#xff09;E’→ TE’ &#xff08;2&#xff…

軟件開發王者搭配:80%低代碼+20%高代碼

數字化領域從來不缺新概念&#xff0c;前兩年市場大談云原生、技術中臺、業務中臺等概念&#xff0c;企業更多聚焦在業務與IT架構的升級。而這兩年&#xff0c;隨著低代碼、生成式AI的盛行&#xff0c;大家則開始挖掘數字化應用的低成本建設模式。 在過去&#xff0c;開發一套系…

Linux 是否被過譽了?

Linux 是否被過譽了&#xff1f; 有些人眼里&#xff0c;電腦這種東西就應該是華麗麗的桌面&#xff0c;手握鼠標戳戳按鈕&#xff0c;鍵盤只為偶爾打打字&#xff0c;仿佛windows式的桌面形式才是理所應當&#xff0c;GUI才是理所應當&#xff0c;x86才是理所應當&#xff0c…

使用 NVProf 檢測 CUDA kernel 的 bank conflict

使用 NVProf 檢測 CUDA kernel 的 bank conflict NVProf 指令 使用 NVProf 可以對 bank conflict 進行檢測: nvprof --events shared_ld_bank_conflict,shared_st_bank_conflict <app> [args...]其中: --events 選項指定的 shared_ld_bank_conflict,shared_st_bank_c…

python -opencv 中值濾波 ,均值濾波,高斯濾波實戰

python -opencv 中值濾波 &#xff0c;均值濾波&#xff0c;高斯濾波實戰 cv2.blur-均值濾波 cv2.medianBlur-中值濾波 cv2.GaussianBlur-高斯濾波 直接看代碼吧&#xff0c;代碼很簡單&#xff1a; import copy import math import matplotlib.pyplot as plt import matp…

c++的更嚴格的類型轉換要求

C有更嚴格的類型轉換要求 C中對類型轉換有嚴格的要求&#xff0c;需要的類型和給的類型不 一致時可能會編譯報錯 例如&#xff1a; C語言中 #include<stdio.h> #include<stdlib.h> //全局變量 //C語言中的函數的形參的類型可以不寫&#xff0c;沒有返回值可以返回&…

聯發科正在改寫全球高端手機芯片市場格局

全球高端手機芯片市場正在重塑。 11 月 21 日&#xff0c;聯發科發布了新一代卓越 5G 生成式 AI 移動芯片天璣 8300。 這款定位于中端機檔位的芯片&#xff0c;無論在技術架構還是在實際性能表現上&#xff0c;都實現了對前代旗艦芯片的趕超&#xff0c;徹底打破了業內長期存…

相機和濾鏡應用程序Nevercenter CameraBag Photo mac軟件特點說明

Nevercenter CameraBag Photo mac是一款相機和濾鏡應用程序&#xff0c;它提供了一系列先進的濾鏡、調整工具和預設&#xff0c;可以幫助用戶快速地優化和編輯照片。 Nevercenter CameraBag Photo mac軟件特點 1. 濾鏡&#xff1a;Nevercenter CameraBag Photo提供了超過200種…

復費率電表和預付費電表有哪些區別?

隨著科技的發展和能源管理的日益嚴格&#xff0c;電表技術也在不斷更新換代。復費率電表和預付費電表作為兩種主流的智能電表&#xff0c;各自具有獨特的優勢和應用場景。接下來&#xff0c;小編來為大家詳細解析這兩種電表的區別及其應用場景。 一、復費率電表 1.定義及工作原…

計算機精度導致各種誤差,大數吃小數

如果 p ? p^* p?是p的近似, ∣ p ? ? p ∣ |p^*-p| ∣p??p∣是絕對誤差, ∣ p ? ? p ∣ / ∣ p ∣ |p^*-p|/|p| ∣p??p∣/∣p∣是相對誤差 舍入誤差,就是數據表示精度不足帶來的誤差 a0.1234564≈0.123456fl(a) b0.1234546≈0.123455fl(b) 在上面發生了舍入誤差 f…

力扣labuladong一刷day15天K個一組翻轉鏈表與回文鏈表

力扣labuladong一刷day15天K個一組翻轉鏈表與回文鏈表 一、25. K 個一組翻轉鏈表 題目鏈接&#xff1a;https://leetcode.cn/problems/reverse-nodes-in-k-group/ 思路&#xff1a;k個一組翻轉鏈表&#xff0c;每k個翻轉抽取出一個單獨的方法reverse&#xff0c;翻轉a到b&…

力扣刷題第二十九天--二叉樹

前言 問問自己&#xff0c;刷題的效果真的達到了嗎&#xff1f; 內容 一、翻轉二叉樹 226.翻轉二叉樹 給你一棵二叉樹的根節點 root &#xff0c;翻轉這棵二叉樹&#xff0c;并返回其根節點。 遞歸 func invertTree(root *TreeNode) *TreeNode {if rootnil{return root}…

Vue中的$nextTick的作用

在 Vue 中&#xff0c;當某些數據發生變化時&#xff0c;DOM 并不會立即更新。相反&#xff0c;Vue 會在下一個事件循環周期&#xff08;microtask&#xff09;中異步執行更新&#xff0c;這樣可以避免頻繁的 DOM 操作。然而&#xff0c;有時候我們需要在 DOM 更新后執行一些操…

2024-NeuDS-數據庫題目集

一.判斷題 1.在數據庫中產生數據不一致的根本原因是冗余。T 解析&#xff1a;數據冗余是數據庫中產生數據不一致的根本原因&#xff0c;因為當同一數據存儲在多個位置時&#xff0c;如果其中一個位置的數據被修改&#xff0c;其他位置的數據就不一致了。因此&#xff0c;在數據…

11.docker的網絡-docker0的理解及bridge網橋模式的介紹與實例

1.docker0的基本理解 安裝完docker服務后&#xff0c;我們首先查看一下宿主機的網絡配置 ifconfig我們可以看到&#xff0c;docker服務會默認在宿主機上創建一個虛擬網橋docker0&#xff0c;該網橋網絡的名字稱為docker0。它在內核層連通了其他物理或者虛擬網卡&#xff0c;這…

ubuntu22.04系統下載程序和依賴,并拷貝到指定路徑下

腳本1 apt install aptitude apt-get -d install xxx #xxx是待下載的安裝包 mv /var/cache/apt/archives/* /home/tuners/1apt install aptitude apt-get -d install xxx mv /var/cache/apt/archives/*.deb /home/tuners/1 xxx 為程序包名稱 /home/tuners/1為保存程序包的…

從零開始的搭建指南:開發高效的抖音預約服務小程序

預約服務小程序提高了效率&#xff0c;節省了用戶時間。下文&#xff0c;小編將與大家一同探討如何從零開始打造預約服務小程序。 第一步&#xff1a;明確需求和目標 確定你的小程序主要服務領域是什么&#xff1f;是醫療預約、美容美發、餐廳預訂還是其他行業&#xff1f;明…

Python 如何開發出RESTful Web接口,DRF框架助力靈活實現!

Django Rest Framework&#xff08;DRF&#xff09;是構建強大且靈活的Web API的優秀工具。它基于Django&#xff0c;提供了一套用于構建Web API的組件和工具&#xff0c;簡化了API開發過程&#xff0c;同時保留了Django的優雅和強大。 一、Web應用模式 在開發Web應用時&…

Android組件化搭建學習

什么是組件化&#xff1f; 為什么要用組件化&#xff1f;在項目的開發過程中&#xff0c;隨著開發人員的增多及功能的增加&#xff0c;如果提前沒有使用合理的開發架構&#xff0c;那么代碼會越來臃腫&#xff0c;功能間代碼耦合也會越來越嚴重&#xff0c;這時候為了保證項目…