JavaCV依赖精简(Java OpenCV依赖精简)

1.什么是opencv?

OpenCV的全称是Open Source Computer Vision Library,是一个跨平台的计算机视觉库。OpenCV是由英特尔公司发起并参与开发,以BSD许可证授权发行,可以在商业和研究领域中免费使用。OpenCV可用于开发实时的图像处理、计算机视觉以及模式识别程序。该程序库也可以使用英特尔公司的IPP进行加速处理。

JavaCV可以认为是OpenCV的Java版,其本质上是一个Java Interface,是一个联结Java与OpenCV的桥梁,所以它本质上是依赖OpenCV的。关于这东西能查到的文档和资料实在是太少了,这个过程中着实踩了不少坑,记录一下以便帮助以后的人。

2、JavaCV依赖

最近使用 OpenCV 在做验证码识别,第一次采用的 maven 依赖包,下载的包太大,所以精简一下。

		
			org.bytedeco
			javacv-platform
			1.5.5
		

查了下,JavaCV 封装了包含FFmpeg、OpenCV、tensorflow、caffe、tesseract、libdc1394、OpenKinect、videoInput和ARToolKitPlus等在内的计算机视觉领域的常用库和实用程序类。
我只需要OpenCV, 按住 Ctrl 打开pom.xml发现有

JavaCV依赖精简(Java OpenCV依赖精简)_第1张图片

 得到 OpenCV 的依赖包

	
		org.bytedeco
		opencv-platform
		4.5.1-1.5.5
	

试了一下,确实可以用。但是他把所有平台的 jar 都依赖进来了,只好继续优化。
打开pom.xml,经过不是很一帆风顺的尝试终于尝试出来。(我电脑和jdk都是64位的所以一直使用 windows-x86_64 在尝试就是不行,好还后面换了windows-x86尝试了一下,结果成功了

JavaCV依赖精简(Java OpenCV依赖精简)_第2张图片

 这6个依赖如下

 		
			org.bytedeco
			javacpp
			1.5.5
		
		
			org.bytedeco
			javacpp
			1.5.5
			windows-x86
		
		
			org.bytedeco
			openblas
			0.3.13-1.5.5
		
		
			org.bytedeco
			openblas
			0.3.13-1.5.5
			windows-x86
		
		
			org.bytedeco
			opencv
			4.5.1-1.5.5
		
		
			org.bytedeco
			opencv
			4.5.1-1.5.5
			windows-x86
		 

经过测试发现还可以删除2个,最终精简如下

		
			org.bytedeco
			javacpp
			1.5.5
			windows-x86
		
		
			org.bytedeco
			openblas
			0.3.13-1.5.5
			windows-x86
		
		
			org.bytedeco
			opencv
			4.5.1-1.5.5
		
		
			org.bytedeco
			opencv
			4.5.1-1.5.5
			windows-x86
		

3、测试代码

package com.demo.verify;

import org.bytedeco.opencv.opencv_core.Mat;
import static org.bytedeco.opencv.global.opencv_highgui.*;//包含了所有图形接口函数
import static org.bytedeco.opencv.global.opencv_imgcodecs.*;
import static org.bytedeco.opencv.global.opencv_imgproc.*; //COLOR_RGB2GRAY

//得到灰度图像
public class Demo1 {
	public static void main(String[] args) {
		String filePath = "I:\\TestCode\\01km.png";
		Mat image = imread(filePath); // 加载图像
		imshow("1", image);// 原始图像
		Mat gray = new Mat();
		cvtColor(image, gray, COLOR_BGRA2GRAY); // 彩色图像转为灰度图像COLOR_RGB2GRAY
		imshow("2", gray);// 灰度图像
		Mat bin = new Mat();
		threshold(gray, bin, 120, 255, THRESH_TOZERO); // 图像二值化
		imshow("3", bin);// 二值图像
		waitKey(0);
	}
}

4、Java OpenCV依赖精简

为了方便打包其他平台,设置一个变量,可以根据需要的平台切换。

	
		android-arm
		android-arm64
		android-x86
		android-x86_64
		ios-arm
		ios-arm64
		ios-x86
		ios-x86_64
		linux-armhf
		linux-arm64
		linux-ppc64le
		linux-x86
		linux-x86_64
		macosx-x86_64
		windows-x86
		windows-x86_64
	
	
		
			org.bytedeco
			javacpp
			1.5.5
			${javacpp.platform.windows-x86_64}
		
		
			org.bytedeco
			openblas
			0.3.13-1.5.5
			${javacpp.platform.windows-x86_64}
		
		
			org.bytedeco
			opencv
			4.5.1-1.5.5
		
		
			org.bytedeco
			opencv
			4.5.1-1.5.5
			${javacpp.platform.windows-x86_64}
		
	

在eclipse中打包执行都没问题,在idea中居然编译不过,idea需要多加一个依赖

        
            org.bytedeco
            javacv
            1.5.5
        

尝试了很久,才精简出来,若对你有帮助点个赞呗^_^

你可能感兴趣的:(java,opencv,计算机视觉,人工智能,JavaCV依赖精简,Java,OpenCV依赖精简)