android - Android 版 Opencv SDK 中的 opencv "C"方法

标签 android c++ c opencv image-processing

我已经下载了opencv2.4.2 Android SDK用于Android开发。我需要将一些 Opencv“C”代码转换为 android-opencv。但我可以在 android-opencv 中找到任何“C”函数。我在 Android opencv 中只能看到“CPP”函数。

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

由于我使用“C”函数,如果我在 Android-opencv 中也有相同的函数,那就太好了。是否可以在android opencv中获取或者只有我们有CPP方法?

最佳答案

好的,如果您已经安装了 Android 版 OpenCV,那么您就有了可用于您目的的 Java 类和方法;如果你真的想使用 C++ 对象,你必须去使用 NDK 进行开发...

但就您而言,Android 版 OpenCv 上确实没有 Java CvHaarDetectobjects ;但在这种情况下,您可以将 HaarCascade 加载到 CascadeClassifier 中,之后您可以使用 detectMultiScale 基于 HaarCascade 执行检测。

您会得到与 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));

关于android - Android 版 Opencv SDK 中的 opencv "C"方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14908794/

相关文章:

android - 将 admob 与静态横幅一起使用

java - 构建相机应用程序 - 接收

c++继承,转换后的vtable

c++ - boost::random 和 boost:uniform_real 适用于 double 而不是 float ?

android - 如何区分Android上的语音通话和视频通话?

android - 为什么 Android xml 中的 moSTLy 值是 8 的倍数?

c++ - 在 Delphi 2010 中使用 C/C++ DLL

c - 从 C 中的文件行中提取信息

c - mingw c 编译

c - 了解 x86 IA32 程序集中函数调用的前/后汇编代码