Opencv "C" Android 版 Opencv SDK 中的方法

opencv "C" methods in Opencv SDK for Android

本文关键字:Opencv 方法 Android SDK      更新时间:2023-10-16

我已经下载了opencvv2.4.2 Android SDK用于Android开发。我需要将一些Opencv"C"代码转换为android Opencv。但我在android opencv中找不到任何"C"函数。我只能在安卓opencv中看到"CPP"功能。

例如,"detectmultiscale"在库中,但我找不到"CvHaardetectobjects"。此外,我找不到任何以"Cv"开头的函数。

由于我使用的是"C"函数,如果我在Android opencv中也有相同的函数,那就太好了。有可能在android opencv中获得或只有我们有CPP方法吗。?

好的,如果你已经为Android安装了OpenCV,那么你就可以使用Java类和方法;如果你真的想使用C++对象,你必须在NDK中进行开发。。。

但在您的情况下,android的OpenCv上确实没有Java CvHaardetectobjects;但在这种情况下,您可以将HaarCascade加载到CascadeClassifier中,之后您可以使用detectMultiScale基于HaarCasade执行检测。

得到了与CvHaardetectobjects相同的结果。

请参阅以下代码:

/////////////Load the HaarCascade file into the clsssifier 
try {
        InputStream is3 = getResources().openRawResource(R.raw.haarcascade_mcs_mouth);
        File cascadeDir = getDir("cascade", Context.MODE_PRIVATE);
        File mCascadeFile = new File(cascadeDir, "haarcascade_mcs_mouth.xml");
        FileOutputStream os3 = new FileOutputStream(mCascadeFile);
        byte[] buffer = new byte[4096];
        int bytesRead;
        Log.e("","Non c'è problema PRIMA della lettura del file");
        while ((bytesRead = is3.read(buffer)) != -1) {
        os3.write(buffer, 0, bytesRead);
        }
        is3.close();
        os3.close();
        Log.e("","Non c'è problema con la lettura del file");
        mJavaDetector = new CascadeClassifier(mCascadeFile.getAbsolutePath());
        if (mJavaDetector.empty()) {
        Log.e(TAG, "Failed to load cascade classifier");
        mJavaDetector = null;
        } else
        Log.e(TAG, "Loaded cascade classifier from " + mCascadeFile.getAbsolutePath());

        } catch (IOException e) {
        e.printStackTrace();
        Log.e(TAG, "Failed to load cascade. Exception thrown: " + e);
        }
    //////Call detectMultiScale with the Detector that contains the cascade     
        mJavaDetector.detectMultiScale(mat,MapofRect,1.15,4,0,new Size(25,15),new Size(face.width(),face.height()/2));

OpenCV for Android基于C++函数,因此您将更幸运地找到C++/Python之间的关系<--->Android/Java。

您也可以在这里浏览Android/Java功能。

此外,有些东西可能已经被弃用,CvHaardetectobject看起来就是其中之一。它似乎已被C++取代:级联分类器::detectMultiScale或Java:CastcadeClassifier.detectMultiScale.