首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >opencv SDK for Android中的Opencv "C“方法

opencv SDK for Android中的Opencv "C“方法
EN

Stack Overflow用户
提问于 2013-02-16 17:23:43
回答 2查看 420关注 0票数 0

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

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

是否可以在android opencv中获取或只有我们有CPP方法?

EN

回答 2

Stack Overflow用户

发布于 2013-02-16 19:01:52

好的,如果你已经安装了,你就可以使用OpenCV类和方法来实现你的目的;如果你真的想使用C++对象,你必须去用NDK...

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

你会得到与CvHaardetectobjects相同的结果。

请参见以下代码:

代码语言:javascript
复制
/////////////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));
票数 0
EN

Stack Overflow用户

发布于 2013-02-16 20:15:33

OpenCV for Android是基于C++函数的,所以你会更幸运地找到C++/Python <-> Android/Java之间的关系。

您还可以浏览Android/Java functions here.

另外,有些东西可能已经被弃用了,而CvHaardetectobjects看起来就是其中之一。它似乎已经被C++: CascadeClassifier::detectMultiScaleJava: CascadeClassifier.detectMultiScale所取代。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14908794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档