OpenCV4Android开发之旅(二)----Eclipse调用OpenCV2.4.4的Java接口配置及示例

时间:2023-01-20 09:02:44

上篇介绍的是,使用OpenCV4Android在Android APP开发中直接使用,现在介绍的是使用OpenCV的Java接口。自2.4.4版本之后,参考这里http://wiki.opencv.org.cn/index.php/Download,OpenCV发布一般发布四个平台的,分别是Windows、Linux/Mac、OpenCV4Android、IOS。上篇中介绍的是专属的OpenCV4Android。这次介绍的是使用Windows版本里提供的Java接口,究竟这种使用方法能否用到APP开发中还要进一步验证。

一、下载OpenCV2.4.4的Windows版本,http://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.4.4/OpenCV-2.4.4.exe/download

二、将其安装到D:\ProgramFile\opencv目录。安装后整个文件夹大小为2.63G.

OpenCV4Android开发之旅(二)----Eclipse调用OpenCV2.4.4的Java接口配置及示例

三、为了区别与Android开发,我们新建个工作空间Eclipse_Java,表示里面放纯Java工程。打开Eclipse切换到这个工作空间,然后点Window---Preference---Java--BuildPath---UserLibraries,起个名字OpenCV2.4.4-Java。然后点Add External JARs,找到目录D:\ProgramFile\opencv\build\java下的opencv-244,之后点下面的Native library location,设定目录为D:/ProgramFile/opencv/build/java/x86。

OpenCV4Android开发之旅(二)----Eclipse调用OpenCV2.4.4的Java接口配置及示例

OpenCV4Android开发之旅(二)----Eclipse调用OpenCV2.4.4的Java接口配置及示例

四、新建一个java项目Test1,建好后建一个主类TestOpenCV,然后选中项目按alt+enter,在Library选项里点右边的Add Library, 点User Library,然后选中刚建的那个OpenCV2.4.4-Java。

OpenCV4Android开发之旅(二)----Eclipse调用OpenCV2.4.4的Java接口配置及示例

OpenCV4Android开发之旅(二)----Eclipse调用OpenCV2.4.4的Java接口配置及示例


五、输入下面的测试代码:

package org.yanzi.testopencv;

import org.opencv.core.Core;
import org.opencv.core.CvType;
import org.opencv.core.Mat;
import org.opencv.highgui.Highgui;
import org.opencv.imgproc.Imgproc;


public class TestOpenCV {
	public static  void main(String[] args){
		
		System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
		
		Mat mat = new Mat();
		mat = Mat.eye(3, 3, CvType.CV_8UC1);
		System.out.print(mat.dump());		
		
		//第二个测试
		Mat src = Highgui.imread("G:\\kunlong.jpg");
		Highgui.imwrite("G:\\kunlong_src.jpg", src);		
		Mat grayMat = new Mat();
		grayMat.create(src.rows(), src.cols(), CvType.CV_8UC1);	
		Imgproc.cvtColor(src, grayMat, Imgproc.COLOR_RGB2GRAY);
		Highgui.imwrite("G:\\kunlong_gray.jpg", grayMat);
		System.out.print("一切OK!");
		
		
		
	
	}

}

第一个测试是官方给出的测试,新建一个矩阵,然后直接dump下打印出来。第二个测试是我加的,imread一个图片,然后保存下,再将其转成灰度图片,然后再保存。因为在Java里没有找到cvNamedWindow、imshow、cvShowImage之类的函数,只能用这个变通的方法来测试。注意是在2.4.4版本之后,在windows版本的OpenCV里才提供了Java接口。从2.3.1(或2.3.0)提供支持Android保本,直到OpenCV2.4.2开始提出OpenCV4Android这个概念,当然里面的东西也发生了变化。从OpenCV4Android开始之后,在Android里你必须要装那个OpenCVManager.apk,但是之前的从2.3.1到2.4.1版本,是不用装这个东西的。各位自己选择吧!2.4.2之后的Android上的OpenCV装了OpenCVManager.apk之后,自己开发的app大小确实变小了不少,之前你即便是用了其中的cvtColor函数,整个app要增加好几M。

另外,不知道为啥,使用Java的OpenCV不能够自动导包。而且在方法前面必须得加上他所属于的类,如imread光写这提示找不到方法,必须写Highgui.imread才可以了。另外,在C++里使用OpenCV的C++接口新建一个矩阵只需Mat mat = Mat(rowls, cols, CV_***)就行了,或者Mat mat, mat.create(),但在java里所有的变量你必须new一下才可以!!!!由于不能够自动导包,且必须加上方法所在的主类的名字,对不熟悉OpenCV的人增加了一定的难度,后续将提供相关接口的归纳和整理。参考:链接1


-------本文系原创,转载请注明作者yanzi1225627,欢迎大家加入OpenCV4Android开发联盟群:66320324,备注yanzi