首页 > 解决方案 > opencv人脸识别LBPH问题

问题描述

我一直在努力寻找一种合适的方法来使用 opencv 在 rust 中初始化 PtrOfLBPHFaceRecognizer。

let mut void_pointer = libc::malloc(mem::size_of::<c_void>() as libc::size_t) as *mut c_void;
if void_pointer.is_null() {
    panic!("failed to allocate memory");
}

let mut model = PtrOfLBPHFaceRecognizer::from_raw(void_pointer);
let ptr = PtrOfLBPHFaceRecognizer::init(model);
let mut model = PtrOfLBPHFaceRecognizer::deref_mut(ptr);
model.train(&images,&labels);

结果是内存引用无效的恐慌。

任何想法表示赞赏。

标签: opencvrustface-recognitionffidlib

解决方案


您可以通过调用该create方法来做到这一点。在 C++ 中用于初始化它的默认参数也在docs中进行了描述。

use opencv::face::prelude::*;

// According to docs, these values are the defaults used in C++
let mut model: PtrOfLBPHFaceRecognizer = <dyn LBPHFaceRecognizer>::create(1, 8, 8, 8, DBL_MAX).unwrap();

推荐阅读