Opencv_测试练习(1)

Opencv的Java实现,在使用javacv配置过程是一大问题,或许对我来说入门配置都很难, 这里就简单介绍一下我的javacv开发过程吧。
资料献上:点击
代码以及javacv.jar,javacpp.jar相关文件下载 密码nn6r
opencv2.4.8.exe下载 密码 db6d
其他资料请联系小白。


第一天:安装配置java相关文件。
下载opencv-2.4.9.exe或者opencv-2.4.8,并安装在c盘根目录下。
下载

  1. javacpp.jar
  2. javacv.jar
  3. javacv-linux-x86_64.jar
  4. javacv-android-arm.jar
  5. javacv-linux-x86.jar
  6. javacv-windows-x86_64.jar
  7. javacv-windows-x86.jar

在myeclipse/eclipse中搭建java项目
配置opencv环境,主要是引入opencv-248.jar的jar文件
便于加载dll资源
测试

public static void main(String[] args) {    
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME); 
        //验证opencv安装是否成功 
        Mat mat = Mat.eye( 3, 3, CvType.CV_8UC1 );  
        System.out.println( "mat = " + mat.dump() );
        System.getProperty("java.library.path");
}

测试结果
这里写图片描述
常见错误:
1.

Caused by: java.lang.UnsatisfiedLinkError: no opencv_highguixxx in java.library.path at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1..

2.

Exception in thread "main" java.lang.UnsatisfiedLinkError: no opencv_java249 in java.library.path at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1857) at 

对于这一类问题,我这一天都在解决这个,首先都说是没有加载dll,但是解决方式五花八门,这里大概描述我解决的过程,
1.首先是各jar包是否存在冲突,或者你的win是64/32是否对于jar
2.检查我相关引用是否正确,记住我们是使用java开发,第四步不要搞错路径
的
3.检测完这些后,并做相关修改后基本可以走通了,
我这里下载了三个opencv的exe文件,如有需要可以直接联系我。我将系数上传。


测试完了当然要马上学习使用主要的识别功能了咯,我有点迫不及待了。

public class TestOpecv1 {

TestOpecv1 t = new TestOpecv1(); 
        try {
            System.out.println("测试人脸");
            int n = t.TestFace("D:/phonoTest/timg.jpg");//图片路径(测试的遇到错误,第一检测是否路径包含中文,我测试时有中文都会读取不到图片)
            System.out.println("相识度:"+n);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }  
public int TestFace(String photoTestUrl) throws Exception{
        int faceNum = 0;
        try { 
            //String libopencv_java = "C:\\opencv\\build\\java\\x64\\opencv_java248.dll";
         /*   System.load(libopencv_java); */
            System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
            /**
             * System.load() 和System.loadLibrary(效果是一样的)
             */ 
            Mat image = Highgui.imread(photoTestUrl);

            CascadeClassifier faceDetector = new CascadeClassifier(
                    "MyXML/haarcascade_frontalface_alt_tree.xml");//关键的是不要忘记自己的xml文件,用来检测人脸的Haar分类器

            System.out.println(faceDetector.toString());
            MatOfRect faceDetections = new MatOfRect();
            faceDetector.detectMultiScale(image, faceDetections);
            faceNum = faceDetections.toArray().length;
        }catch(CvException  e){
            throw new Exception("人脸检测过程遇到异常");
        } catch (Exception e) {
            System.err.println(e.getMessage());
            throw new Exception("检测人脸失败!请稍后重试!");//opencv 人脸识别 相识度测试 
        } 
        return faceNum;
    }
}

这里容易产生异常1:CvException 出现在 faceDetector.detectMultiScale(image, faceDetections);方法调用时,可能异常,在你给定的路径下没有这张图片。
如果解决上面问题后,一直出现容易出现检测不到人脸的情况,可能是没有加载到对应文件:CascadeClassifier faceDetector = new CascadeClassifier( “MyXML/haarcascade_frontalface_alt_tree.xml”);

因为opencv 的exe文件比较大,你可以直接去opencv官网下载,或者联系我给出邮箱或者百度网盘账号也可。

猜你喜欢

转载自blog.csdn.net/ljcc122/article/details/80188978