成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

SpringBoot使用OpenCV示例總結

瀏覽:3日期:2023-05-03 08:35:10

前言

最近有個項目需要對圖片圖像進行處理,使用到了開源框架OpenCV全稱是Open Source Computer Vision Library,是一個跨平臺的計算機視覺庫;而現在的項目都是基于SpringBoot,需要把OpenCv整合進去,下面把在使用中遇到的問題進行一個匯總整理。

下載安裝

Opencv官網提供了一個多個平臺的版本包括:Windows,IOS,Android,地址如下:opencv.org/releases/;因為開發在Windows平臺,發布在Linux平臺,所以我們這里至少需要兩個版本;

windows平臺

直接可以在官網下載opencv-3.4.10-vc14_vc15.exe安裝即可,安裝完會出現opencv文件夾在buildjava目錄下有我們需要的opencv-3410.jar,x64/opencv_java3410.dll,x86/opencv_java3410.dll文件;

Linux平臺

Linux平臺需要我們手動編譯,下載opencv-3.4.10.zip,解壓到/user/local目錄下,然后編譯安裝,執行如下命令:

cd /usr/local/opencv-3.4.10mkdir buildcd buildcmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -DBUILD_TESTS=OFF ..make -j8sudo make install

安裝完之后可以在build/bin目錄下找到opencv-3410.jar,在build/lib目錄下找到libopencv_java3410.so

整合使用

兩個平臺分別安裝完之后,獲取了對應的dll和so文件;兩個平臺獲取到的jar都是一樣的,隨便用哪個都可以,下面看看如何使用

外部引用方式

通過把應用jar與本地庫文件進行分隔開,然后在項目中進行引用

相對路徑方式

可以通過System.loadLibrary來指定本地庫文件,但是這種方式需要在運行時指定-Djava.library.path,具體可以提供配置類:

@Configurationpublic class NativeConfig { static { System.loadLibrary(Core.NATIVE_LIBRARY_NAME); }}

運行時需要在VM arguments中添加-Djava.library.path=對應dll存放的路徑,不然會出現如下錯誤:

Caused by: java.lang.UnsatisfiedLinkError: no opencv_java3410 in java.library.path at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1860) ~[na:1.8.0_251] at java.lang.Runtime.loadLibrary0(Runtime.java:870) ~[na:1.8.0_251] at java.lang.System.loadLibrary(System.java:1122) ~[na:1.8.0_251] at com.springboot.opencv.NativeConfig.<clinit>(NativeConfig.java:10) ~[classes/:na]

絕對路徑方式

可以通過System.load來指定本地庫函數的絕對路徑:

@Configurationpublic class NativeConfig { static { System.load('C:Usersopencvbuildjavax64opencv_java3410.dll'); }}

踩坑1

在IDE中運行使用Opencv功能的時候,出現如下錯誤:

java.lang.UnsatisfiedLinkError: org.opencv.imgcodecs.Imgcodecs.imread_1(Ljava/lang/String;)J at org.opencv.imgcodecs.Imgcodecs.imread_1(Native Method) ~[opencv-3.4.10.jar:unknown] at org.opencv.imgcodecs.Imgcodecs.imread(Imgcodecs.java:332) ~[opencv-3.4.10.jar:unknown] at com.springboot.opencv.OpenCVController.testOpenCV(OpenCVController.java:13) ~[classes/:na]

很明顯是在使用jar包里面的方法時沒有找到對應的本地庫函數,也就是說loadLibrary沒有成功,但是之前其實在本地Java項目中是有進行測試的,可以通過的,猜測是不是使用了什么工具導致加載失敗,最終鎖定在spring-boot-devtools工具包,提供了動態加載等功能,直接移除此工具包,或者配置如下開關:

System.setProperty('spring.devtools.restart.enabled', 'false');

內部引用方式

為了更加簡單部署,可以把本地庫文件和項目文件打成一個jar包,可以把本地庫文件放在resources目錄下,這樣可以打成一個jar包,現在的主要問題就是如何加載jar包里面的本地庫文件,通過測試發現可以讀取到resources目錄下的庫文件,但是通過system.load并不能去加載成功,對應的是一個類似如下的路徑:

file:/C:/Users/Administrator.SKY-20170404CXG/Desktop/springboot-0.0.1-SNAPSHOT.jar!/BOOT-INF/classes!/opencv

最后采用的方式是把讀取的庫文件,存放到系統的一個臨時文件夾下,然后拿到庫文件的絕對路徑,這樣就可以通過system.load直接去加載,具體實現代碼可以參考Github

踩坑2

在執行maven編譯打包的時候,發現本地庫文件(dll或者so文件)體積會變大,猜測maven在編譯的時候對本地庫文件也進行了編譯,具體如何禁用指定的文件格式編譯,而只需要拷貝即可:

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <configuration> <encoding>UTF-8</encoding> <!-- maven編譯下面擴展類型文件的時候直接復制原文件,而不會進行二次編碼--> <nonFilteredFileExtensions>dll,so</nonFilteredFileExtensions> </configuration></plugin>

第三方Jar包

除了以上兩種需要我們自己去實現加載的方式,其實還可以直接使用第三方提供的jar包OpenPnp,里面包含了OpenCV.jar,對應各個平臺的本地庫,以及加載本地庫的封裝類;查看其源碼可以發現,其實也是通過判斷當前系統,然后將對應的本地庫文件拷貝到系統的臨時文件夾下,最后通過system.load去加載:

Files.createTempDirectory(`opencv_openpnp`);

因為此包兼顧了所有平臺,所以整個包有點大,一百多M,如果部署的系統確定,其實可以自己去加載指定庫文件就可以了,然后以相同的方式打成一個公共包供各個系統使用;

總結

本文雖然介紹的是在項目中使用OpenCV的一些總結,但其實其他的本地庫也可以使用相同的方式;本文重點記錄一下在使用過程中遇到的那些坑,以及加載庫文件的方式。

到此這篇關于SpringBoot使用OpenCV示例總結的文章就介紹到這了,更多相關SpringBoot使用OpenCV內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
欧美在线视频一区二区三区| 久久日韩粉嫩一区二区三区| 久久久一区二区三区| 九九**精品视频免费播放| 国产偷国产偷亚洲高清97cao| 久久精品水蜜桃av综合天堂| 99久久精品国产精品久久| 日韩欧美一区电影| 国产精品夜夜爽| 欧美另类高清zo欧美| 美女一区二区视频| 欧美伊人精品成人久久综合97| 午夜成人免费视频| 免播放器亚洲| 爽好久久久欧美精品| 色综合久久久久久久久久久| 日韩电影一区二区三区| 色94色欧美sute亚洲线路一ni | 秋霞午夜鲁丝一区二区老狼| 欧美专区一区二区三区| 日韩激情在线观看| 精品视频1区2区3区| 韩国精品久久久| 欧美群妇大交群中文字幕| 国产精品白丝av| 精品区一区二区| 色综合色狠狠天天综合色| 国产精品理论在线观看| 9色精品在线| 日一区二区三区| 欧美性大战久久久| 国产乱人伦精品一区二区在线观看 | 午夜在线电影亚洲一区| 91久久精品一区二区二区| 久热成人在线视频| 日韩一区二区三区视频在线观看 | 欧美日韩亚洲一区三区 | 久久综合色综合88| 欧美日韩免费观看一区| 亚洲精品一卡二卡| 美女诱惑黄网站一区| 久久99久久久欧美国产| 精品欧美一区二区久久| 欧美一区二视频在线免费观看| 国产精品国产三级国产普通话蜜臀 | 亚洲欧美日本韩国| 免费视频一区| 国产真实精品久久二三区| 精品久久久久久最新网址| 亚洲一区二区在线免费观看视频| 色悠悠久久综合| 国产不卡免费视频| 中文字幕精品综合| 亚洲欧美久久| 国产精品一线二线三线精华| 久久久国产一区二区三区四区小说 | 日韩成人伦理电影在线观看| 欧美人xxxx| 色综合欧美在线| 亚洲一区二区三区爽爽爽爽爽| 色菇凉天天综合网| www.日本不卡| 一区二区三区欧美视频| 欧美日韩一区二区在线观看| 91亚洲精品久久久蜜桃网站| 亚洲男人天堂av网| 欧美日韩精品一区二区在线播放| 精品久久久久久亚洲综合网| 一区二区亚洲精品| 久久精品免费看| 中文字幕+乱码+中文字幕一区| 老司机精品久久| 91影视在线播放| 丝袜脚交一区二区| 国产亚洲综合性久久久影院| 久久精品日产第一区二区| 国产福利视频一区二区三区| 亚洲视频一区在线| 欧美精品乱码久久久久久| 欧美午夜在线视频| 另类小说色综合网站| 欧美国产综合一区二区| 欧美做爰猛烈大尺度电影无法无天| 91原创在线视频| 日韩影院在线观看| 久久久av毛片精品| 久久综合狠狠综合久久综青草| av网站一区二区三区| 一区二区三区精密机械公司| 日韩三级av在线播放| 国产精品亚洲一区| 成人一区二区三区中文字幕| 一区二区三区精品在线| 日韩精品中文字幕一区二区三区| 国产日韩精品久久| 成人av在线播放网址| 亚洲线精品一区二区三区八戒| 日韩精品亚洲专区| 国产亚洲欧美激情| 欧美亚洲一区二区三区四区| 欧美日韩精品不卡| 国产精品资源在线看| 亚洲一级二级三级在线免费观看| 精品国产乱码久久久久久牛牛 | 色av成人天堂桃色av| 欧美区日韩区| 国产一区久久久| 亚洲一区二区四区蜜桃| 久久精品网站免费观看| 欧美日韩免费一区二区三区 | 亚洲精品一区二区在线观看| 色狠狠一区二区| 99av国产精品欲麻豆| 成人美女在线视频| 青青草国产精品97视觉盛宴| 中文字幕亚洲一区二区va在线| 欧美精品在线观看一区二区| 一区二区av| 色综合久久综合网欧美综合网| 国内外精品视频| 午夜成人免费电影| 亚洲欧洲成人av每日更新| 欧美一区二区成人| 91久久精品一区二区三| 在线视频精品一区| 欧美激情1区2区3区| 精品在线观看免费| 亚洲国产aⅴ成人精品无吗| 欧美激情一区三区| 日韩一区二区在线看| 欧美性色欧美a在线播放| 亚洲一区二区动漫| 亚洲午夜精品久久| 成人亚洲精品久久久久软件| 免费一级片91| 亚洲图片欧美色图| 日韩伦理免费电影| 国产女人aaa级久久久级| 日韩精品一区二区三区视频 | 奇米影视在线99精品| 亚洲美女一区二区三区| 欧美国产成人在线| 精品不卡在线视频| 3atv一区二区三区| 色就色 综合激情| 99精品国产高清一区二区 | 国产一区中文字幕| 一区二区三区日韩| 日韩一区有码在线| 日本一区二区三区在线观看| 欧美一卡二卡在线| 欧美日韩大陆一区二区| 老色鬼久久亚洲一区二区| 亚洲自啪免费| 夜夜爽av福利精品导航 | 国产麻豆日韩| 亚洲少妇一区| 日韩一级欧洲| 国产日韩高清一区二区三区在线| 91久久精品一区二区别| 精品动漫av| 亚洲精品九九| 一本色道久久综合亚洲二区三区| 黄色精品网站| 亚洲国产免费看| 亚洲麻豆一区| 国产亚洲成人一区| 一本一道久久综合狠狠老精东影业| 亚洲国产第一| 亚洲人成人一区二区三区| 一区二区亚洲| 亚洲最黄网站| 亚洲一区三区视频在线观看| 国产精品日本欧美一区二区三区| 亚洲国产三级| 99精品免费| 久久国产直播| 欧美亚洲精品一区| 欧美日韩中文精品| 精品一区二区在线看| 极品少妇xxxx精品少妇| 精品一区二区三区在线观看| 国产精品99久久久久久似苏梦涵| 国产精品香蕉一区二区三区| 国产成人精品一区二区三区四区 | 亚洲欧美日韩小说| 亚洲六月丁香色婷婷综合久久| 亚洲视频在线一区观看| 亚洲色图.com| 亚洲国产精品久久艾草纯爱| 午夜精品久久久| 青青草97国产精品免费观看| 久久66热偷产精品| 精品伊人久久久久7777人| 国产精一区二区三区| 成人av网站在线| 欧美一区国产一区| 99精品免费网| 欧美视频你懂的| 日韩欧美中文一区|