OpenCV的java环境安装【Mac环境】

514 阅读2分钟

Opencv安装

1、官网下载opencv包:opencv.org/releases/

以4.10.0为例,下载解压后:

cd opencv-4.10.0
mkdir build && cd build

也可以从git下载

2、安装opencv_contrib

git clone https://github.com/opencv/opencv_contrib.git
cd opencv_contrib
git checkout 4.10.0

3、进行cmake安装:

cmake \
-DCMAKE_SYSTEM_PROCESSOR=arm64 \
-DCMAKE_OSX_ARCHITECTURES=arm64 \
-DWITH_OPENJPEG=OFF \
-DWITH_IPP=OFF \
-D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local/opencv \
-D JAVA_INCLUDE_PATH=$JAVA_HOME/include \
-D JAVA_AWT_LIBRARY=$JAVA_HOME/jre/lib/amd64/libawt.so \
-D JAVA_JVM_LIBRARY=$JAVA_HOME/jre/lib/arm/server/libjvm.so \
-D BUILD_opencv_python2=OFF \
-D BUILD_opencv_java=ON \
-D INSTALL_PYTHON_EXAMPLES=OFF \
-D INSTALL_C_EXAMPLES=OFF \
-D BUILD_ZLIB=OFF \
-D OPENCV_ENABLE_NONFREE=ON \
-D OPENCV_EXTRA_MODULES_PATH=/{your workspace}/opencv/opencv_contrib-4.7.0/modules \
-D BUILD_EXAMPLES=ON ..

4、make

make -j8

表示使用全部8个内核来运行make指令,可以按实际硬件情况调整,过程大概5~20分钟

5、安装

sudo make install

Idea使用opencv配置

1、进入“Project Settings”,添加jar包

这两个地方都可以,放到Global Libraries中需要额外在当前Project中添加上这个jar

2、启动程序要配置本地opencv库的地址:

-Djava.library.path=/usr/local/opencv/share/java/opencv4/

如果你这样操作没有效果,代码可以这样写

static {
    System.load("/usr/local/opencv/share/java/opencv4/libopencv_java4100.dylib");
}

3、代码测试:

import org.opencv.core.Core;
import org.opencv.core.CvType;
import org.opencv.core.Mat;

public class TestOpenCV {
    public static void main(String[] args) {
        // 使用 System.load 来加载具体路径下的库文件
        System.load("/usr/local/opencv/share/java/opencv4/libopencv_java4100.dylib");

        System.out.println("Loaded OpenCV version " + Core.VERSION);
        Mat mat = Mat.eye(3, 3, CvType.CV_8UC1);
        System.out.printf("mat = %s ", mat.dump());
    }
}

如果输出了下列信息,则表示成功!

Loaded OpenCV version 4.10.0
mat = [  1,   0,   0;
   0,   1,   0;
   0,   0,   1] 

一个Demo

import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;

public class GrayImage {
    static {
        System.load("/usr/local/opencv/share/java/opencv4/libopencv_java4100.dylib");
    }

    public static void main(String[] args) {
        // 加载图像
        Mat image = Imgcodecs.imread("你输入的文件路径");
        if (image.empty()) {
            System.out.println("图像加载失败!");
            return;
        }

        // 转为灰度图像
        Mat gray = new Mat();
        Imgproc.cvtColor(image, gray, Imgproc.COLOR_BGR2GRAY);

        // 应用一些预处理(例如二值化)
        Mat binary = new Mat();
        Imgproc.threshold(gray, binary, 220, 255, Imgproc.THRESH_BINARY);

        // 保存预处理后的图像
        Imgcodecs.imwrite("你输出的文件路径", binary);
    }
}

调节24行代码中的参数,会有各种不同的效果

比如你公司有水印,通过查看水印的颜色来去除,如果他是彩色的,那就需要统一化