日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

SpringBoot使用OpenCV示例總結

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

前言

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

下載安裝

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

windows平臺

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

Linux平臺

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

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存放的路徑,不然會出現(xiàn)如下錯誤:

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來指定本地庫函數(shù)的絕對路徑:

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

踩坑1

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

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

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

內部引用方式

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

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

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

踩坑2

在執(zhí)行maven編譯打包的時候,發(fā)現(xiàn)本地庫文件(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包

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

Files.createTempDirectory(`opencv_openpnp`);

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

總結

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

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

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产高清日韩| 激情自拍一区| 欧美日韩在线播放视频| 偷拍精品精品一区二区三区| 99久久99久久精品国产片果冰| 欧美性感美女一区二区| 亚洲成人三区| 免费在线视频一区| 亚洲欧洲美洲国产香蕉| 日韩黄色在线观看| 国产精品国码视频| 欧美激情国产在线| 久久精品在线| 日韩精品一区第一页| 日韩高清二区| 精品高清久久| 国产在线欧美| 中文字幕亚洲在线观看| 国产精品久久久久久妇女 | 国产精品一区亚洲| 国产粉嫩在线观看| 麻豆91精品| 免费亚洲一区| 亚洲午夜一级| 国产日韩欧美一区二区三区 | 免费在线成人网| 国产日韩三级| 日韩不卡免费高清视频| 老牛国产精品一区的观看方式| 国产亚洲一区二区三区啪| 在线天堂中文资源最新版| 国产精品丝袜xxxxxxx| 国产精品视频一区视频二区| 九九久久婷婷| 精品五月天堂| 首页国产欧美日韩丝袜| 麻豆国产精品一区二区三区| 欧美 日韩 国产一区二区在线视频| 日本精品国产| 视频一区中文| 精品美女久久| 婷婷视频一区二区三区| 中文在线资源| 日韩视频1区| 国精品一区二区| 精品一区电影| 亚洲精品字幕| 99久久亚洲精品| 国产精品久久久久77777丨| 国产一级久久| 精品成人免费一区二区在线播放| 日韩欧美精品一区二区综合视频| 韩国精品主播一区二区在线观看| 国产亚洲久久| 亚洲深夜影院| 91视频一区| 国产伦精品一区二区三区千人斩| 在线亚洲欧美| 精品视频黄色| 国产欧美三级| 亚洲香蕉久久| 亚洲国产专区校园欧美| 久久伊人亚洲| 青青草伊人久久| 久久亚洲精品伦理| 亚洲第一精品影视| 日本精品黄色| 麻豆精品蜜桃视频网站| 亚洲三级视频| 久久人人99| 国产一区二区三区亚洲| 国产精品porn| 欧美啪啪一区| 亚洲一区av| 亚洲激情婷婷| 99久精品视频在线观看视频| 国产在线一区不卡| 国产乱子精品一区二区在线观看| 只有精品亚洲| 免费在线视频一区| 香蕉久久久久久久av网站| 久久狠狠婷婷| 性感美女一区二区在线观看| 国内精品亚洲| 久久久久九九精品影院| 麻豆中文一区二区| 蜜桃精品视频| 久久精品九色| 久久a爱视频| 国产精品一国产精品k频道56| 日韩中文av| 亚洲精品免费观看| 亚洲欧洲日韩| 欧美天堂在线| 久久国内精品| 国产精品亚洲综合久久| 日韩av字幕| 国产欧美日韩| 久久97视频| 日韩电影免费在线观看| 日韩欧美二区| 欧洲毛片在线视频免费观看| 国产精品99一区二区| 欧美日韩尤物久久| 亚洲二区视频| 老色鬼久久亚洲一区二区| 三级亚洲高清视频| 亚洲精品第一| 国产精品视频一区二区三区四蜜臂 | 国产欧美三级| 久久尤物视频| 91精品一区二区三区综合在线爱 | 激情婷婷久久| 国产精品色网| 日韩二区在线观看| 国产精品大片| 国产精品高颜值在线观看| 91看片一区| 伊人久久亚洲影院| 亚洲精品日本| 国产一区二区色噜噜| 桃色av一区二区| 国产精品视区| 日本不卡高清| 国内精品麻豆美女在线播放视频| 日韩久久精品网| 男人天堂欧美日韩| 国产欧美啪啪| 久久久国产精品一区二区中文| 午夜在线一区| 国产精品一区二区av日韩在线| 日韩成人高清| 亚洲bt欧美bt精品777| 国产一区二区三区不卡视频网站| 久久青草久久| 亚洲精品免费观看| 国产精品麻豆久久| 欧美成人国产| 日韩av成人高清| 国产精品99视频| 国产视频亚洲| 麻豆国产一区| 国产女优一区| 国内不卡的一区二区三区中文字幕| 精品1区2区3区4区| 欧美成人aaa| 日韩午夜在线| 久久精品资源| 三级欧美韩日大片在线看| 精品入口麻豆88视频| 视频一区国产视频| 亚洲女同av| 日韩av资源网| 久久蜜桃av| 国产精品第一国产精品| 一区久久精品| 中文字幕在线高清| 日本91福利区| 亚洲一区二区网站| 国产精品精品国产一区二区| 亚洲另类av| 久久久久国产精品一区三寸| 国产日韩欧美中文在线| 尤物在线精品| 中文字幕在线看片| 国产欧美一区二区三区精品观看| 99国产精品| 日韩电影免费在线观看| 欧美在线首页| 日韩午夜av在线| av高清不卡| 麻豆91在线播放| 亚洲免费成人av在线| 免费久久精品| 国产精品yjizz视频网| 国产精品一区二区av日韩在线| 日韩中文字幕一区二区三区| 99精品综合| 久久男人av资源站| 国产激情久久| 国产精品嫩草影院在线看| 视频精品一区| 水蜜桃久久夜色精品一区的特点| 日韩欧美自拍| 国产一区二区久久久久| 国产精品亚洲综合色区韩国| 亚洲最新av| av不卡免费看| 欧美+亚洲+精品+三区| 日韩欧美不卡| 亚洲一级少妇| 亚洲深夜视频| 麻豆网站免费在线观看| 国产精品porn| 国产精品videossex久久发布| 日本精品另类| 日本精品久久| 日韩av一区二区三区| 综合一区av| 日韩一区二区三免费高清在线观看 |