OpenCV for Java 整合Spring Boot写一个灰度测试Demo

前言

说点啥吧,最近因为工作接触了机器视觉,抽出点时间研究一下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、执行结果

这里找了个妹子照片测试了一下,完美~

 代码连接

https://download.csdn.net/download/bluerebel/86724203

猜你喜欢

转载自blog.csdn.net/bluerebel/article/details/127075788