Java中使用opencv的問題
作為圖像處理出身,不僅僅要會C++圖像處理、matlab圖像處理、python圖像處理、最起碼也得會java圖像處理,當(dāng)然我最終還都用的是opencv這個機(jī)器視覺庫了。
今天簡單介紹一下java中如何使用opencv。
一、配置庫
(1)官網(wǎng)下載opencv,在opencv\build\java\以及opencv\build\java\x64下提取jar包以及動態(tài)庫。
(2)以springboot舉例,在resources下創(chuàng)建lib/opencv文件夾,并將這兩個包放進(jìn)去。
(3) 在pom.xml添加依賴如下(或者其他方式添加依賴均可)
<dependency> <groupId>org</groupId> <artifactId>opencv</artifactId> <scope>system</scope> <systemPath>${project.basedir}\src\main\resources\lib\opencv\opencv-440.jar</systemPath> </dependency>
注意版本要修改成你自己opencv的版本。
至此,配置完成。
二、其他知識
在java中調(diào)用dll:
// 加載動態(tài)庫 URL url = ClassLoader.getSystemResource("lib/opencv/opencv_java440.dll"); System.load(url.getPath());
三、簡單的例子
(1)創(chuàng)建一個springboot項目,在測試類中編寫代碼
讀圖像以及灰度化:
package testopencv.demo; import org.junit.jupiter.api.Test; import org.junit.runner.RunWith; import org.opencv.core.CvType; import org.opencv.core.Mat; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import java.net.URL; import static org.opencv.highgui.HighGui.imshow; import static org.opencv.highgui.HighGui.waitKey; import static org.opencv.imgcodecs.Imgcodecs.imread; import static org.opencv.imgcodecs.Imgcodecs.imwrite; import static org.opencv.imgproc.Imgproc.COLOR_RGB2GRAY; import static org.opencv.imgproc.Imgproc.cvtColor; @RunWith(SpringRunner.class) @SpringBootTest class DemoApplicationTests { /** * @return * @Description * @Param * @Author zhangsan * @Date 2020.09.05 9:43 **/ @Test public void testOpencv() throws Exception { // 解決awt報錯問題 System.setProperty("java.awt.headless", "false"); System.out.println(System.getProperty("java.library.path")); // 加載動態(tài)庫 URL url = ClassLoader.getSystemResource("lib/opencv/opencv_java440.dll"); System.load(url.getPath()); // 讀取圖像 Mat image = imread("C:\\Users\\admin\\Pictures\\hello.jpg"); if (image.empty()) { throw new Exception("image is empty"); } imshow("Original Image", image); // 創(chuàng)建輸出單通道圖像 Mat grayImage = new Mat(image.rows(), image.cols(), CvType.CV_8SC1); // 進(jìn)行圖像色彩空間轉(zhuǎn)換 cvtColor(image, grayImage, COLOR_RGB2GRAY); imshow("Processed Image", grayImage); imwrite("D://hello.jpg", grayImage); waitKey(); } }
效果:
四、結(jié)束
簡單介紹了java使用opencv的方法。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot整合Java Web三大件的詳細(xì)過程
這篇文章主要介紹了SpringBoot整合Java Web三大件的詳細(xì)過程,注冊自定義的Servlet、Filter、Listener組件到springboot內(nèi)嵌的Servlet容器,讓它們發(fā)揮自己的作用,需要的朋友可以參考下2025-04-04探討:使用httpClient在客戶端與服務(wù)器端傳輸對象參數(shù)的詳解
本篇文章是對使用httpClient在客戶端與服務(wù)器端傳輸對象參數(shù)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06