Java中使用opencv的問(wèn)題
作為圖像處理出身,不僅僅要會(huì)C++圖像處理、matlab圖像處理、python圖像處理、最起碼也得會(huì)java圖像處理,當(dāng)然我最終還都用的是opencv這個(gè)機(jī)器視覺(jué)庫(kù)了。
今天簡(jiǎn)單介紹一下java中如何使用opencv。
一、配置庫(kù)
(1)官網(wǎng)下載opencv,在opencv\build\java\以及opencv\build\java\x64下提取jar包以及動(dòng)態(tài)庫(kù)。
(2)以springboot舉例,在resources下創(chuàng)建lib/opencv文件夾,并將這兩個(gè)包放進(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的版本。
至此,配置完成。
二、其他知識(shí)
在java中調(diào)用dll:
// 加載動(dòng)態(tài)庫(kù)
URL url = ClassLoader.getSystemResource("lib/opencv/opencv_java440.dll");
System.load(url.getPath());三、簡(jiǎn)單的例子
(1)創(chuàng)建一個(gè)springboot項(xiàng)目,在測(cè)試類中編寫代碼
讀圖像以及灰度化:
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報(bào)錯(cuò)問(wèn)題
System.setProperty("java.awt.headless", "false");
System.out.println(System.getProperty("java.library.path"));
// 加載動(dòng)態(tài)庫(kù)
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é)束
簡(jiǎn)單介紹了java使用opencv的方法。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Flutter驗(yàn)證碼輸入框的2種方法實(shí)現(xiàn)
本文主要介紹了Flutter驗(yàn)證碼輸入框的2種方法實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12
SpringBoot整合Java Web三大件的詳細(xì)過(guò)程
這篇文章主要介紹了SpringBoot整合Java Web三大件的詳細(xì)過(guò)程,注冊(cè)自定義的Servlet、Filter、Listener組件到springboot內(nèi)嵌的Servlet容器,讓它們發(fā)揮自己的作用,需要的朋友可以參考下2025-04-04
maven實(shí)現(xiàn)docker自動(dòng)化部署插件的使用
本文主要介紹了maven實(shí)現(xiàn)docker自動(dòng)化部署插件的使用,分享給大家,感興趣的小伙伴們可以參考一下2021-06-06
探討:使用httpClient在客戶端與服務(wù)器端傳輸對(duì)象參數(shù)的詳解
本篇文章是對(duì)使用httpClient在客戶端與服務(wù)器端傳輸對(duì)象參數(shù)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
Spring五大類注解讀取存儲(chǔ)Bean對(duì)象的方法
這篇文章主要介紹了Spring五大類注解讀取存儲(chǔ)Bean對(duì)象,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-09-09

