这两天我一直在努力寻找一种使用 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);
结果是由于无效的内存引用而导致恐慌。
感谢任何想法。
答案 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();