java中使用opencv

Posted leoking01

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中使用opencv相关的知识,希望对你有一定的参考价值。

Java + opencv学习:在Eclipse下配置基于Java的OpenCV开发环境

技术分享 分类:

最近研究OpenCV想用java进行开发,因此研究了一下怎么在Eclipse中配置基于java的Opencv.

第一步:先到OpenCV官网下载你想要的版本,假设使用的是2.4.6版本。这里附上下载地址:http://opencv.org/downloads.html,在官网下载你想要的版本,解压到本地的某个目录。比如 D:/OpenCV/。

第二步,打开Eclipse,并找到Window –> Preferences.

 

技术分享

 

第三步:进入Preferences菜单后,找到Java –> Build Path –> User Libraries ,然后点击New

技术分享

 

第四步:点击上面对话框的New之后,会弹出一个对话框,如下图所示,在里面填入一个名字,如OpenCV-2.4.6

技术分享

 

第五步:点击右侧的Add External JARs

技术分享

 

第六步:点击后,浏览文件夹找到前面解压的文件夹,D:\OpenCV\build\java\,选择里面的opencv-246.jar,添加完jar包后,展开刚才添加的jar包,选择Native library location,点击右侧的Edit按钮,对其进行编辑

技术分享

第七步:点击 External Folder...选择目录到:D:\OpenCV\build\java\x64\,然后点击ok   ,如果你使用的32位系统则选择x86文件夹

技术分享

 

第八步:配置完成后的结果应该是这样的。

技术分享

 

 

这样就配置完成了。下面进行一个简单的测试。创建一个Java Project,然后在项目上右键,Build Path ---->Configure Build Path ,点击Libraries选项卡,点击下面的Add Library,弹出来的对话框中选择“User Library”。

技术分享

然后勾选OpenCV-2.4.6,这样就添加完成了。

技术分享

添加完成后的效果如下:

技术分享

 

下面就可以进行测试了,可以使用如下的代码进行测试。

 

[java] view plain copy
 
  1. import org.opencv.core.Core;  
  2. import org.opencv.core.CvType;  
  3. import org.opencv.core.Mat;  
  4.   
  5. public class Hello  
  6. {  
  7.    public static void main( String[] args )  
  8.    {  
  9.       System.loadLibrary( Core.NATIVE_LIBRARY_NAME );  
  10.       Mat mat = Mat.eye( 3, 3, CvType.CV_8UC1 );  
  11.       System.out.println( "mat = " + mat.dump() );  
  12.    }  
  13. }  

 

 

package testOpencvJava;

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

import org.opencv.core.*;

import org.opencv.imgproc.*; 
import org.opencv.highgui.*;

public class Hello {

//    public static void main(String[] args) {
//    // TODO Auto-generated method stub
//
//    }

public static void main( String[] args ) 

System.loadLibrary( Core.NATIVE_LIBRARY_NAME ); 
Mat mat = Mat.eye( 3, 3, CvType.CV_8UC1 ); 
mat = Mat.ones( 100, 100, CvType.CV_8UC1 ); 

double [ ] valsSca= {255,255,255 };
org.opencv.core.Scalar s = Scalar.all(255.0) ;//= "";//"";// = valsSca ;
s.set(valsSca);
double [] widHei = { 100.0,100.0 };
org.opencv.core.Size sz=new Size(widHei) ;//= Size( );
sz.set( widHei );
sz.height=100;
sz.width=100;
mat=new Mat( sz, 0 , s );
// mat=Mat();
// mat.nativeObj = mat.nativeObj* 100;

// System.out.println( "mat = " + mat.dump() ); 

// imshow( "mat", mat );
Highgui.imwrite( "mat.jpg", mat);

}


}

 

 


package testOpencvJava;

 

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.MatOfRect;
import org.opencv.core.Point;
import org.opencv.core.Rect;
import org.opencv.core.Scalar;
import org.opencv.highgui.Highgui;
import org.opencv.objdetect.CascadeClassifier;


public class FaceDetector {

public static void main(String[] args) {

System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
System.out.println("\nRunning FaceDetector");

CascadeClassifier faceDetector = new CascadeClassifier(FaceDetector.class.getResource("haarcascade_frontalface_alt.xml").getPath());
Mat image = Highgui
.imread(FaceDetector.class.getResource("wangxinling.JPG").getPath());

MatOfRect faceDetections = new MatOfRect();
faceDetector.detectMultiScale(image, faceDetections);

System.out.println(String.format("Detected %s faces", faceDetections.toArray().length));

for (Rect rect : faceDetections.toArray()) {
Core.rectangle(image, new Point(rect.x, rect.y), new Point(rect.x + rect.width, rect.y + rect.height),
new Scalar(0, 255, 0));
}

String filename = "wangxinling-ouput.png";
System.out.println(String.format("Writing %s", filename));
Highgui.imwrite(filename, image);
}
}

 



 

 

 

 




























以上是关于java中使用opencv的主要内容,如果未能解决你的问题,请参考以下文章

如何在片段中使用 GetJsonFromUrlTask​​.java

# Java 常用代码片段

# Java 常用代码片段

如何在OpenCV中使用双重类型的地图重新映射

创建片段而不从 java 代码实例化它

在桌面java应用程序中使用opencv c++人脸检测代码