Mac M1編譯OpenCV獲取libopencv_java490.dylib文件

Window OpenCV下載地址
https://opencv.org/releases/
OpenCV源碼下載
https://github.com/opencv/opencv/tree/4.9.0
https://github.com/opencv/opencv_contrib/tree/4.9.0
OpenCV依賴
brew install libjpeg libpng libtiff cmake3 ant freetype
構建open CV
cmake -G Ninja \-DCMAKE_BUILD_TYPE=Release \-DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" \-DWITH_IPP=OFF \-DWITH_TBB=OFF \-DWITH_OPENCL=OFF \-DENABLE_NEON=OFF \-DCPU_BASELINE="" \-DCPU_DISPATCH="" \-DBUILD_opencv_dnn=OFF \-DBUILD_JAVA=ON \-DPNG_ARM_NEON_OPT=0 \-DBUILD_opencv_imgcodecs=ON \-DBUILD_opencv_ml=OFF \-DBUILD_LIST="core;java" \-DCV_DISABLE_OPTIMIZATION=ON \-DBUILD_opencv_python=OFF \-DOPENCV_EXTRA_MODULES_PATH=/Users/youshang/Downloads/opencv_contrib-4.9.0/modules \-DJAVA_AWT_INCLUDE_PATH=$JAVA_HOME/include \-DJAVA_AWT_LIB=$JAVA_HOME/lib/libjawt.dylib \-DJAVA_INCLUDE_PATH=$JAVA_HOME/include \-DJAVA_INCLUDE_PATH2=$JAVA_HOME/include/darwin \-DJAVA_JVM_LIBRARY=$JAVA_HOME/lib/server/libjvm.dylib \..
  • 注意-DCMAKE_OSX_ARCHITECTURES-DBUILD_LIST參數,僅僅是為了編譯成功,里面缺了很多模塊
  • 編譯出來只能使用本地庫,jar功能不全選擇maven倉庫下載替換
構建完成標志:

在這里插入圖片描述

編譯opencv
ninja
編譯完成標志:

在這里插入圖片描述

  • 編譯opencv為了獲取 libopencv_java490文件
  • 文件存放路徑為:opencv-4.9.0/build/lib (不要使用構建成功的jar包,jar包單獨下載)
  • libopencv_java490.dylib Mac依賴的 OpenCV本地庫
  • opencv_java490.dll window依賴的OpenCV本地庫
項目中集成OpenCV
配置libopencv_java490文件
  • libopencv_java490文件丟到 /usr/local/lib 目錄下,在項目中加載OpenCV本地庫
    static {// 加載 OpenCV 本地庫System.loadLibrary(Core.NATIVE_LIBRARY_NAME);}
  • idea添加VM options引用

    -Djava.library.path=/usr/local/lib
    

    在這里插入圖片描述

配置openCV jar包
        <dependency><groupId>com</groupId><artifactId>opencv</artifactId><version>4.9.0</version><scope>system</scope><systemPath>${project.basedir}/libs/opencv-4.9.0-0.jar</systemPath></dependency>
異常信息:
no opencv_java490
Exception in thread "main" java.lang.UnsatisfiedLinkError: no opencv_java490 in java.library.path: [/Users/youshang/Library/Java/Extensions, /Library/Java/Extensions, /Network/Library/Java/Extensions, /System/Library/Java/Extensions, /usr/lib/java, .]at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2678)at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:830)at java.base/java.lang.System.loadLibrary(System.java:1890)at com.rangertech.osc.video.utils.CameraCalibrationJava.<clinit>(CameraCalibrationJava.java:26)
  • 原因:未配置libopencv_java490所導致的
  • 解決方法:將libopencv_java490配置到-Djava.library.path= 讀取的位置即可
long org.opencv.imgcodecs.Imgcodecs.imread_1(java.lang.String)
Exception in thread "main" java.lang.UnsatisfiedLinkError: 'long org.opencv.imgcodecs.Imgcodecs.imread_1(java.lang.String)'at org.opencv.imgcodecs.Imgcodecs.imread_1(Native Method)at org.opencv.imgcodecs.Imgcodecs.imread(Imgcodecs.java:330)at com.rangertech.osc.video.utils.CameraCalibrationJava.calibration(CameraCalibrationJava.java:83)at com.rangertech.osc.video.utils.CameraCalibrationJava.main(CameraCalibrationJava.java:192)
  • 原因:有可能是jdk架構、libopencv_java490版本、libopencv_java490編譯架構,不一致導致的

  • 解決方法:單獨下載opencv jar包

    • 下載地址:https://repo1.maven.org/maven2/org/openpnp/opencv/4.9.0-0/

    • 在調用時主動加載OpenCV:

          public static void main(String[] args) {//加載openCVPrintVersion.main(args);CameraCalibrationDTO dto = new CameraCalibrationDTO();dto.setChessboardHeight(6);dto.setChessboardWidth(9);dto.setSquareSize(24.0);dto.setImagePaths(Lists.newArrayList("/Users/youshang/Downloads/Checkerboard.png"));CameraCalibrationJava.calibration(dto);}
      
zsh: command not found:
CMake Error: The source directory "/Users/youshang/Downloads/opencv-4.9.0/build/ " does not exist.
Specify --help for usage, or press the help button on the CMake GUI.
zsh: command not found: -DBUILD_JAVA=ON
  • 原因:
    • CMake 提示找不到 …/opencv-4.9.0/build/ 目錄,原因是路徑末尾多了一個空格;
    • 終端報 “zsh: command not found: -DBUILD_JAVA=ON” 往往是因為換行符 \ 后面不小心留了空格,導致 shell 沒把它當作續行符處理,接下來的參數被當成了新的命令。

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

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

相關文章

前端面試準備-3

1.let、const、var的區別 ①&#xff1a;let和const為塊級作用域&#xff0c;var為全局作用域 ②&#xff1a;let和var可以重新賦值定義&#xff0c;而const不可以 ③&#xff1a;var會提升到作用域頂部&#xff0c;但不會初始化&#xff1b;let和const也會提升到作用不頂部…

Java 中 Lock 接口詳解:靈活強大的線程同步機制

在 Java 中&#xff0c;Lock 是一個接口&#xff0c;它提供了比 synchronized 關鍵字更靈活、更強大的線程同步機制。以下將詳細介紹 Lock 接口及其實現類&#xff0c;以及它與 synchronized 相比的優點。 Lock 接口及其實現類介紹 Lock 接口 Lock 接口定義了一系列用于獲取…

實驗分享|基于sCMOS相機科學成像技術的耐高溫航空涂層材料損傷檢測實驗

1實驗背景 航空發動機外殼的耐高溫涂層材料在長期高溫、高壓工況下易產生微小損傷與裂紋&#xff0c;可能導致嚴重安全隱患。傳統光學檢測手段受限于分辨率與靈敏度&#xff0c;難以捕捉微米級缺陷&#xff0c;且檢測效率低下。 某高校航空材料實驗室&#xff0c;采用科學相機…

python訓練營day40

知識點回顧&#xff1a; 彩色和灰度圖片測試和訓練的規范寫法&#xff1a;封裝在函數中展平操作&#xff1a;除第一個維度batchsize外全部展平dropout操作&#xff1a;訓練階段隨機丟棄神經元&#xff0c;測試階段eval模式關閉dropout 作業&#xff1a;仔細學習下測試和訓練代碼…

Baklib企業CMS全流程管控與智能協作

企業CMS全流程管控方案解析 現代企業內容管理中&#xff0c;全流程管控的實現依賴于對生產、審核、發布及迭代環節的系統化整合。通過動態發布引擎與元數據智能標記技術&#xff0c;系統可自動匹配內容與目標場景&#xff0c;實現標準化模板驅動的快速部署。針對多分支機構的復…

Qt程序添加調試輸出窗口:CONFIG += console

目錄 1.背景 2.解決方案 3.原理詳解 4.控制臺窗口的行為 5.條件編譯&#xff08;僅調試模式顯示控制臺&#xff09; 6.替代方案 7.總結 1.背景 在Qt程序開發中&#xff0c;開發者經常遇到這樣的困擾&#xff1a; 開發機上程序運行正常 發布到其他機器后程序無法啟動 …

《江西棒球資訊》棒球運動發展·棒球1號位

聯賽體系結構 | League Structure MLB模式 MLB采用分層體系&#xff08;大聯盟、小聯盟&#xff09;&#xff0c;強調梯隊建設和長期發展。 MLB operates a tiered system (Major League, Minor League) with a focus on talent pipelines and long-term development. 中國現…

Python爬蟲實戰:研究Tornado框架相關技術

1. 引言 1.1 研究背景與意義 網絡爬蟲作為一種自動獲取互聯網信息的程序,在信息檢索、數據挖掘、輿情分析等領域有著廣泛的應用。隨著互聯網數據量的爆炸式增長,對爬蟲的性能和效率提出了更高的要求。傳統的同步爬蟲在處理大量 URL 時效率低下,而異步爬蟲可以顯著提高并發…

Vue-列表過濾排序

列表過濾 基礎環境 數據 persons: [{ id: "001", name: "劉德華", age: 19 },{ id: "002", name: "馬德華", age: 20 },{ id: "003", name: "李小龍", age: 21 },{ id: "004", name: "釋小龍&q…

JDK21深度解密 Day 9:響應式編程模型重構

【JDK21深度解密 Day 9】響應式編程模型重構 引言&#xff1a;從Reactor到虛擬線程的范式轉變 在JDK21中&#xff0c;虛擬線程的引入徹底改變了傳統的異步編程模型。作為"JDK21深度解密"系列的第91天&#xff0c;我們將聚焦于響應式編程模型重構這一關鍵主題。通過…

UE5打包項目設置Project Settings(打包widows exe安裝包)

UE5打包項目Project Settings Edit-Project Settings- Packaging-Ini Section Denylist-Advanced 1&#xff1a;打包 2&#xff1a;高級設置 3&#xff1a;勾選創建壓縮包 4&#xff1a;添加要打包地圖Map的數量 5&#xff1a;選擇要打包的地圖Maps 6&#xff1a;Project-Bui…

Fastapi 學習使用

Fastapi 學習使用 Fastapi 可以用來快速搭建 Web 應用來進行接口的搭建。 參考文章&#xff1a;https://blog.csdn.net/liudadaxuexi/article/details/141062582 參考文章&#xff1a;https://blog.csdn.net/jcgeneral/article/details/146505880 參考文章&#xff1a;http…

java helloWord java程序運行機制 用idea創建一個java項目 標識符 關鍵字 數據類型 字節

HelloWord public class Hello{public static void main(String[] args) {System.out.print("Hello,World!");} }java程序運行機制 用idea創建一個java項目 建立一個空項目 新建一個module 注釋 標識符 關鍵字 標識符注意點 數據類型 public class Demo02 {public st…

隨機響應噪聲-極大似然估計

一、核心原因&#xff1a;噪聲機制的數學可逆性 在隨機響應機制&#xff08;Randomized Response&#xff09;中使用極大似然估計&#xff08;Maximum Likelihood Estimation, MLE&#xff09;是為了從擾動后的噪聲數據中無偏地還原原始數據的統計特性。隨機響應通過已知概率的…

SMT貼片機工藝優化與效率提升策略

內容概要 現代電子制造領域中&#xff0c;SMT貼片機作為核心生產設備&#xff0c;其工藝優化與效率提升直接影響企業競爭力。本文聚焦設備參數校準、吸嘴選型匹配、SPI檢測技術三大技術模塊&#xff0c;結合生產流程重構與設備維護周期優化兩大管理維度&#xff0c;形成系統性…

AI提示工程(Prompt Engineering)高級技巧詳解

AI提示工程(Prompt Engineering)高級技巧詳解 文章目錄 一、基礎設計原則二、高級提示策略三、輸出控制技術四、工程化實踐五、專業框架應用提示工程是與大型語言模型(LLM)高效交互的關鍵技術,精心設計的提示可以顯著提升模型輸出的質量和相關性。以下是經過驗證的詳細提示工…

光電設計大賽智能車激光對抗方案分享:低成本高效備賽攻略

一、賽題核心難點與備賽痛點解析 全國大學生光電設計競賽的 “智能車激光對抗” 賽題&#xff0c;要求參賽隊伍設計具備激光對抗功能的智能小車&#xff0c;需實現光電避障、目標識別、軌跡規劃及激光精準打擊等核心功能。從歷年參賽情況看&#xff0c;選手普遍面臨三大挑戰&a…

【KWDB 創作者計劃】_再熱垃圾發電汽輪機仿真與監控系統:KaiwuDB 批量插入10萬條數據性能優化實踐

再熱垃圾發電汽輪機仿真與監控系統&#xff1a;KaiwuDB 批量插入10萬條數據性能優化實踐 我是一臺N25-3.82/390型汽輪機&#xff0c;心臟在5500轉/分的轟鳴中跳動。垃圾焚燒爐是我的胃&#xff0c;將人類遺棄的殘渣轉化為金色蒸汽&#xff0c;沿管道涌入我的胸腔。 清晨&#x…

day23-計算機網絡-1

1. 網絡簡介 1.1. 網絡介質 網線&#xff1a;cat5,cat5e 六類網線&#xff0c;七類網線&#xff0c;芭蕾網線光纖&#xff1a;wifi&#xff1a;無線路由器&#xff0c;ap5G 1.2. 常見網線類型 1.2.1. 雙絞線&#xff08;Twisted Pair Cable&#xff09;【最常用】 按性能主…

VR/AR 視網膜級顯示破局:10000PPI 如何終結顆粒感時代?

一、傳統液晶 “紗窗效應”&#xff1a;VR 沉浸體驗的最大絆腳石 當用戶首次戴上 VR 頭顯時&#xff0c;眼前密密麻麻的像素網格往往打破沉浸感 —— 這正是傳統液晶顯示在近眼場景下的致命缺陷。受限于 500-600PPI 的像素密度&#xff0c;即使達到 4K 分辨率&#xff0c;等效到…