opencv人脸识别LBPH问题

时间:2021-07-02 22:32:59

标签: opencv rust face-recognition ffi dlib

这两天我一直在努力寻找一种使用 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);

结果是由于无效的内存引用而导致恐慌。

感谢任何想法。

1 个答案:

答案 0 :(得分:0)

您可以通过调用 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();