opencv face-detection 代码分析 (1)人脸识别后的数据

2014,3,16
 
老师的工作建议如下:
 
1. 与四民沟通下,把openCV这边的源代码和调用接口发给四民同时抄送给我。
2. 根据openCV的实时检测结果,实现对屏幕的调整(下周一前基本实现,下周五完全实现)。 四民这边会辅助你。

 

近期任务: 2014.3.14 

每天的汇总各发给老师和师兄

 

opencv:把opencv函数接口注释,搞懂它的功能,了解它检测的数据是。。。

测试。。。

 

底层:安卓阅读器,放大缩小。。。怎么去调用

 

原函数是这样的

 分析一下这个函数

 1 public Mat onCameraFrame(CvCameraViewFrame inputFrame) {//输入的数据是一幅图

 2 

 3         mRgba = inputFrame.rgba();

 4         mGray = inputFrame.gray();

 5 

//开始检测面部 6 if (mAbsoluteFaceSize == 0) { 7 int height = mGray.rows(); 8 if (Math.round(height * mRelativeFaceSize) > 0) { 9 mAbsoluteFaceSize = Math.round(height * mRelativeFaceSize); 10 } 11 mNativeDetector.setMinFaceSize(mAbsoluteFaceSize); 12 } 13 14 MatOfRect faces = new MatOfRect(); 15 16 if (mDetectorType == JAVA_DETECTOR) { 17 if (mJavaDetector != null) 18 mJavaDetector.detectMultiScale(mGray, faces, 1.1, 2, 2, // TODO: objdetect.CV_HAAR_SCALE_IMAGE 19 new Size(mAbsoluteFaceSize, mAbsoluteFaceSize), new Size()); 20 } 21 else if (mDetectorType == NATIVE_DETECTOR) { 22 if (mNativeDetector != null) 23 mNativeDetector.detect(mGray, faces); 24 } 25 else { 26 Log.e(TAG, "Detection method is not selected!"); 27 } 28 29 Rect[] facesArray = faces.toArray();//人脸的数据是一个数组 30 for (int i = 0; i < facesArray.length; i++)//在人脸的位置画一个框 31 Core.rectangle(mRgba, facesArray[i].tl(), facesArray[i].br(), FACE_RECT_COLOR, 3); 32 33 return mRgba;//输出的数据还是一张图 34 }

 

师兄的要求:

 

//我想要的是人脸识别后的数据

  Rect[] facesArray = faces.toArray();

        for (int i = 0; i < facesArray.length; i++)

            Core.rectangle(mRgba, facesArray[i].tl(), facesArray[i].br(), FACE_RECT_COLOR, 3);

//这里面就有的,可以这样: 



    Rect[] getDataFromCamera(){

    // 这里是你们检测的代码

    Rect[] facesArray = faces.toArray();

    return facesArray;

}

 

 

 输入是一张图inputFrame,然后先识别出人脸,然后在人脸的位置画一个框,返回的数据还是一张图,就是多了一个矩形框


Rect[] facesArray = faces.toArray()  这个facesArray应该就是你要的数据了,就是脸的位置

 

你可能感兴趣的:(opencv)