前言
说点啥吧,最近因为工作接触了机器视觉,抽出点时间研究一下OpenCV,本人是JAVA码农一枚,所以本篇的技术实现使用Java语言。
OpenCV的安装我已经整理了一篇,写的比较简单,后续会继续完善,欢迎大家评论指点OpenCV 安装和配置 - Mac OS 环境_会敲代码的小蜜蜂的博客-CSDN博客
代码示例参考了Java中使用opencv_我啥都会的博客-CSDN博客_java opencv
1、首先创建一个SpringBoot!
将OpenCV安装目录下的jar包与动态库文件拷贝到我们的项目中来
源文件目录(OpenCV安装后会自动生成,如果没有请参考安装篇)
/usr/local/opencv-4.6.0/build/bin/opencv-460.jar
/usr/local/opencv-4.6.0/build/lib/libopencv_java460.dylib
在pom中间中添加本地opencv的引用
<dependency>
<groupId>org.opencv</groupId>
<artifactId>opencv</artifactId>
<version>4.6.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/resources/lib/opencv/opencv-460.jar</systemPath>
</dependency>
2、测试代码
创建测试类DemoGrayscaleTests.java
package org.example.opencv;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.opencv.core.CvType;
import org.opencv.core.Mat;
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;
@Slf4j
@RunWith(SpringRunner.class)
public class DemoGrayscaleTests {
@Test
public void testOpencv() throws Exception {
// 解决awt报错问题
System.setProperty("java.awt.headless", "false");
log.info("java library path: {}", System.getProperty("java.library.path"));
// 加载动态库
URL url = ClassLoader.getSystemResource("lib/opencv/libopencv_java460.dylib");
log.info("url path: {}", url.getPath());
System.load(url.getPath());
// 读取图像
Mat image = imread("/Users/xiaomifeng/Pictures/face.jpeg");
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("/Users/xiaomifeng/Pictures/hello.jpg", grayImage);
waitKey();
}
}
3、执行结果
这里找了个妹子照片测试了一下,完美~
代码连接