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

您的位置:首頁技術(shù)文章
文章詳情頁

SpringBoot使用OpenCV示例總結(jié)

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

前言

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

下載安裝

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

windows平臺(tái)

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

Linux平臺(tái)

Linux平臺(tái)需要我們手動(dòng)編譯,下載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

整合使用

兩個(gè)平臺(tái)分別安裝完之后,獲取了對(duì)應(yīng)的dll和so文件;兩個(gè)平臺(tái)獲取到的jar都是一樣的,隨便用哪個(gè)都可以,下面看看如何使用

外部引用方式

通過把應(yīng)用jar與本地庫文件進(jìn)行分隔開,然后在項(xiàng)目中進(jìn)行引用

相對(duì)路徑方式

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

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

運(yùn)行時(shí)需要在VM arguments中添加-Djava.library.path=對(duì)應(yīng)dll存放的路徑,不然會(huì)出現(xiàn)如下錯(cuò)誤:

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]

絕對(duì)路徑方式

可以通過System.load來指定本地庫函數(shù)的絕對(duì)路徑:

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

踩坑1

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

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

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

內(nèi)部引用方式

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

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

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

踩坑2

在執(zhí)行maven編譯打包的時(shí)候,發(fā)現(xiàn)本地庫文件(dll或者so文件)體積會(huì)變大,猜測(cè)maven在編譯的時(shí)候?qū)Ρ镜貛煳募策M(jìn)行了編譯,具體如何禁用指定的文件格式編譯,而只需要拷貝即可:

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

第三方Jar包

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

Files.createTempDirectory(`opencv_openpnp`);

因?yàn)榇税骖櫫怂衅脚_(tái),所以整個(gè)包有點(diǎn)大,一百多M,如果部署的系統(tǒng)確定,其實(shí)可以自己去加載指定庫文件就可以了,然后以相同的方式打成一個(gè)公共包供各個(gè)系統(tǒng)使用;

總結(jié)

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

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

標(biāo)簽: Spring
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
鲁大师成人一区二区三区 | 国产a亚洲精品| 亚洲精品成人一区| 久久精品欧美一区| 色爱av综合网| 日韩午夜av| 亚洲精品女人| 久久不卡国产精品一区二区| 国产精品99久久免费| 婷婷综合福利| 宅男噜噜噜66国产日韩在线观看| 欧美精品一区二区久久| 国内精品福利| 视频在线观看国产精品| 亚洲精品无播放器在线播放| 日本成人在线视频网站| 国产福利资源一区| 日韩欧美一区免费| 亚洲伦乱视频| 免费看日韩精品| 激情不卡一区二区三区视频在线| 黑人精品一区| 婷婷亚洲精品| 日韩免费高清| 视频一区二区中文字幕| 欧美日本不卡| 精品中文字幕一区二区三区av| 亚洲一级淫片| 日韩一区二区三区免费播放| 亚洲欧美日韩专区| 精品国产黄a∨片高清在线| 好吊一区二区三区| 久久精品一区二区国产| 日韩欧美精品| 国产精品亲子伦av一区二区三区| 99精品美女| 国产激情精品一区二区三区| 黄色成人91| 日韩成人综合| 国产精区一区二区| 夜夜嗨网站十八久久| 欧美日韩在线观看首页| 国产欧美一级| 日韩av一区二区三区四区| 国产综合亚洲精品一区二| 精品国产乱码久久久久久1区2匹| 石原莉奈一区二区三区在线观看| 日韩欧美1区| 奇米狠狠一区二区三区| 美日韩精品视频| 亚洲v在线看| 日韩欧美自拍| 首页国产精品| av免费不卡国产观看| 麻豆成人综合网| 欧美精品三级在线| 日韩1区2区日韩1区2区| 视频一区中文字幕国产| 亚洲国产日韩欧美在线| 久久久久亚洲| 久久一区二区三区电影| 久久香蕉国产| 五月精品视频| 日韩精品免费一区二区在线观看| 国产一二在线播放| 亚洲成人二区| 91精品在线观看国产| 91久久中文| 亚洲欧洲日韩精品在线| 国产精品美女久久久| 日韩午夜电影| 久久亚洲电影| 97久久中文字幕| 国产麻豆精品久久| 精品三区视频| 亚洲va在线| 视频一区日韩| 另类小说一区二区三区| 国产乱码精品一区二区三区四区| 国产精品777777在线播放| 日韩88av| 午夜在线一区二区| 日韩高清一区| 精品女同一区二区三区在线观看| 丰满少妇一区| 福利一区在线| 日本免费久久| 午夜在线播放视频欧美| 91精品国产自产精品男人的天堂| 国产精品亚洲综合久久| 一本大道色婷婷在线| 久久亚洲国产精品一区二区| 欧美在线看片| 欧美日韩伊人| 久久精品影视| 日韩高清一区在线 | 青青久久av| 亚洲精品三级| 国产a亚洲精品| 久色成人在线| 91嫩草亚洲精品| 日本久久二区| 欧美日韩国产在线观看网站| 久久精品国产久精国产| 亚洲色图综合| 亚洲手机在线| 国产日韩视频在线| 日韩中文字幕一区二区三区| 欧美丰满日韩| 美腿丝袜在线亚洲一区| 亚洲精品日本| 亚洲精品看片| 午夜在线精品| 好看的av在线不卡观看| 免费在线小视频| 精品三级在线| 久久精品网址| 久久激情av| 欧美亚洲一级| 国产探花一区| 日韩av网站免费在线| 亚洲综合电影一区二区三区| 久久久久久久久久久妇女| 97精品视频在线看| 在线人成日本视频| 97精品国产一区二区三区 | 婷婷精品在线| 国产精品女主播一区二区三区| 日韩精品一区二区三区免费观影| 精品视频高潮| 亚洲va中文在线播放免费| 91亚洲国产| 久久理论电影| 免费日本视频一区| 久久亚洲影院| 日本aⅴ亚洲精品中文乱码| 欧美日韩一区二区高清| 麻豆一区二区99久久久久| 欧美黄色精品| 亚洲啊v在线| 亚洲深夜影院| 欧美日韩精品一区二区三区在线观看| 欧美亚洲二区| 韩国精品主播一区二区在线观看| 成人羞羞视频在线看网址| 在线综合视频| 国产伦精品一区二区三区视频 | 国产精品白浆| 91精品xxx在线观看| 99在线|亚洲一区二区| 久久国产精品免费精品3p| 日本在线高清| 免播放器亚洲| 国产高清日韩| 视频一区中文| 免费在线欧美黄色| 久久国产成人| 国产精品红桃| 亚洲一区日韩| 免费视频一区二区三区在线观看| 日韩av有码| 日本a级不卡| 99精品在线| 国产精品高潮呻吟久久久久| 午夜日本精品| 中文字幕在线视频久| 日本在线视频一区二区| 国产在线看片免费视频在线观看| 日韩黄色av| 亚洲免费在线| 久久久精品日韩| 国产一区二区久久久久| 日本不卡不码高清免费观看 | 亚洲无线观看| 69堂免费精品视频在线播放| 美女少妇全过程你懂的久久| 天海翼亚洲一区二区三区| 日韩精品欧美| 精品国产精品国产偷麻豆 | 久久精品影视| 蜜桃久久久久久| 国产精品高清一区二区| 欧美一区激情| 欧美成人aaa| 蜜桃国内精品久久久久软件9| 国产精品99久久免费| 日韩1区2区日韩1区2区| 99在线观看免费视频精品观看| 国产成人免费| 福利视频一区| 精品久久久亚洲| 精品久久91| 都市激情国产精品| 特黄毛片在线观看| 日韩深夜视频| 久久香蕉国产| 国产亚洲高清视频| 亚洲精品一区二区妖精| 欧美中文一区二区| 黄色欧美在线|