opencv - 如何找到 facemark-> OpenCV_Contrib 加载模型的模型文件?

标签 opencv module dataset keypoint opencv-contrib

bool myDetector(cv::InputArray image, cv::OutputArray faces, cv::CascadeClassifier *face_cascade){
  cv::Mat gray;

  if (image.channels() > 1)
    cvtColor(image, gray, CV_BGR2GRAY);
  else
    gray = image.getMat().clone();

  equalizeHist(gray, gray);

  std::vectorcv::Rect faces_;
  face_cascade->detectMultiScale(gray, faces_, 1.4, 2, cv::CASCADE_SCALE_IMAGE, cv::Size(30, 30));
  cv::Mat(faces_).copyTo(faces);
  return true;
}

(UIImage *) detectFacialLandmark:(UIImage *) image{
  double CurrentTime = CACurrentMediaTime();

  NSString *pathToFaceCascade = [[NSBundle mainBundle] pathForResource:@"lbpcascade_frontalface" ofType:@"xml"];

  cv::Mat faceImage;
  UIImageToMat(image, faceImage);

  cv::CascadeClassifier face_cascade;
  face_cascade.load([pathToFaceCascade UTF8String]);
  cv::face::FacemarkKazemi::Params params;
  cv::Ptrcv::face::FacemarkKazemi facemark = cv::face::FacemarkKazemi::create(params);
  facemark->setFaceDetector((cv::face::FN_FaceDetector)myDetector, &face_cascade);
  facemark->loadModel("load model");
  std::vectorcv::Rect faces;
  resize(faceImage,faceImage,cv::Size(460,460), 0, 0, cv::INTER_LINEAR_EXACT);
  facemark->getFaces(faceImage,faces);
  std::vector< std::vectorcv::Point2f > shapes;
  if(facemark->fit(faceImage,faces,shapes))
  {
    for( size_t i = 0; i < faces.size(); i++ )
    {
      cv::rectangle(faceImage, faces[i], cvScalar(255, 0, 0));
    }
    for(unsigned long i=0;i<faces.size();i++){
      for(unsigned long k=0;k<shapes[i].size();k++)
        cv::circle(faceImage,shapes[i][k],5,cv::Scalar(0,0,255),cv::FILLED);
    }
  }

  UIImage *returnImage = MatToUIImage(faceImage);
  NSLog(@"test processing time : %f", (CACurrentMediaTime() - CurrentTime));

        return returnImage;
}    

我正在为 iOS 应用程序做项目。 对于这个项目,我使用的是 OpenCV。具体来说,我添加了 OpenCV_contrib 模块来获取人脸特征点的信息。

在应用OpenCV_contrib的过程中,我遇到了一个问题。 facemark->loadModel("载入模型"); 为了检测面标,我必须找到模型文件。

我想知道如何找到“facemark->loadModel("load model");”的模型文件

最佳答案

我不知道你是怎么安装你的 OpenCV 的。但是要找到 OpenCV 的 data,只需转到 opencv-master/data 如果你下载了,或者转到 https://github.com/opencv/opencv/tree/master/data下载。

这是 OpenCV 3.3 的文件列表:

# https://github.com/opencv/opencv/tree/master/data
/opencv-master/data$ tree .
.
├── CMakeLists.txt
├── haarcascades
│   ├── haarcascade_eye_tree_eyeglasses.xml
│   ├── haarcascade_eye.xml
│   ├── haarcascade_frontalcatface_extended.xml
│   ├── haarcascade_frontalcatface.xml
│   ├── haarcascade_frontalface_alt2.xml
│   ├── haarcascade_frontalface_alt_tree.xml
│   ├── haarcascade_frontalface_alt.xml
│   ├── haarcascade_frontalface_default.xml
│   ├── haarcascade_fullbody.xml
│   ├── haarcascade_lefteye_2splits.xml
│   ├── haarcascade_licence_plate_rus_16stages.xml
│   ├── haarcascade_lowerbody.xml
│   ├── haarcascade_profileface.xml
│   ├── haarcascade_righteye_2splits.xml
│   ├── haarcascade_russian_plate_number.xml
│   ├── haarcascade_smile.xml
│   └── haarcascade_upperbody.xml
├── haarcascades_cuda
│   ├── haarcascade_eye_tree_eyeglasses.xml
│   ├── haarcascade_eye.xml
│   ├── haarcascade_frontalface_alt2.xml
│   ├── haarcascade_frontalface_alt_tree.xml
│   ├── haarcascade_frontalface_alt.xml
│   ├── haarcascade_frontalface_default.xml
│   ├── haarcascade_fullbody.xml
│   ├── haarcascade_lefteye_2splits.xml
│   ├── haarcascade_lowerbody.xml
│   ├── haarcascade_profileface.xml
│   ├── haarcascade_righteye_2splits.xml
│   ├── haarcascade_smile.xml
│   └── haarcascade_upperbody.xml
├── hogcascades
│   └── hogcascade_pedestrians.xml
├── lbpcascades
│   ├── lbpcascade_frontalcatface.xml
│   ├── lbpcascade_frontalface_improved.xml
│   ├── lbpcascade_frontalface.xml
│   ├── lbpcascade_profileface.xml
│   └── lbpcascade_silverware.xml
├── readme.txt
└── vec_files
    └── trainingfaces_24-24.vec

5 directories, 39 files

关于opencv - 如何找到 facemark-> OpenCV_Contrib 加载模型的模型文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48061441/

相关文章:

python - cv2.remap 或 scipy.interpolate.map_coordinates 在 Tensorflow 中的等效/实现?

c++ - C++ 中逗号分隔值的 `operator<<`

Java java.lang.NoClassDefFoundError 在模块加载器中加载 jar 时出现错误

c# - 为什么Session变量会更新?

python - Google 应用程序引擎部署 Flask 应用程序 - ImportError : libSM. so.6:无法打开共享对象文件:没有这样的文件或目录

c++ - 我想删除背景(就像黑环)

module - OCaml - 如何查看模块的界面?

python - 如何在列表中运行我的标记器函数 - 模块对象不可调用?

azure - 使用应用程序注册获取 Microsoft 不记名 token 并从数据集中读取

machine-learning - 需要用于欺诈检测的数据集