Java + opencv学习:在Eclipse下配置基于Java的OpenCV开发环境
2016-04-08 17:43 6491人阅读 评论(0) 收藏 举报
分类:
OpenCV学习(10)
版权声明:本文为博主原创文章,未经博主允许不得转载。
最近研究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
- import org.opencv.core.Core;
- import org.opencv.core.CvType;
- import org.opencv.core.Mat;
- public class Hello
- {
- public static void main( String[] args )
- {
- System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
- Mat mat = Mat.eye( 3, 3, CvType.CV_8UC1 );
- System.out.println( "mat = " + mat.dump() );
- }
- }
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); } }