Java中使用opencv的问题
作者:我啥都会
这篇文章主要介绍了Java中使用opencv的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
作为图像处理出身,不仅仅要会C++图像处理、matlab图像处理、python图像处理、最起码也得会java图像处理,当然我最终还都用的是opencv这个机器视觉库了。
今天简单介绍一下java中如何使用opencv。
一、配置库
(1)官网下载opencv,在opencv\build\java\以及opencv\build\java\x64下提取jar包以及动态库。
(2)以springboot举例,在resources下创建lib/opencv文件夹,并将这两个包放进去。
(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中调用dll:
// 加载动态库 URL url = ClassLoader.getSystemResource("lib/opencv/opencv_java440.dll"); System.load(url.getPath());
三、简单的例子
(1)创建一个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")); // 加载动态库 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); // 创建输出单通道图像 Mat grayImage = new Mat(image.rows(), image.cols(), CvType.CV_8SC1); // 进行图像色彩空间转换 cvtColor(image, grayImage, COLOR_RGB2GRAY); imshow("Processed Image", grayImage); imwrite("D://hello.jpg", grayImage); waitKey(); } }
效果:
四、结束
简单介绍了java使用opencv的方法。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。