@@ -6,7 +6,12 @@ use crate::constants::*;
6
6
use anyhow:: Result ;
7
7
use capture:: Capture ;
8
8
use opencv:: core:: { Mat , Ptr , Rect , Scalar , Size , TickMeter } ;
9
- use opencv:: { dnn, highgui, imgproc, objdetect, prelude:: * , types:: VectorOfRect } ;
9
+ use opencv:: {
10
+ dnn, highgui, imgproc,
11
+ objdetect:: { CascadeClassifier , FaceDetectorYN } ,
12
+ prelude:: * ,
13
+ types:: VectorOfRect ,
14
+ } ;
10
15
use window:: Window ;
11
16
12
17
fn preprocess_image ( frame : & Mat ) -> Result < Mat > {
@@ -43,10 +48,7 @@ fn clamp_rect_to_image_bounds(rect: Rect) -> Rect {
43
48
rect
44
49
}
45
50
46
- fn detect_faces (
47
- classifiers : & mut Vec < & mut objdetect:: CascadeClassifier > ,
48
- image : Mat ,
49
- ) -> Result < VectorOfRect > {
51
+ fn detect_faces ( classifiers : & mut Vec < & mut CascadeClassifier > , image : Mat ) -> Result < VectorOfRect > {
50
52
let mut faces = VectorOfRect :: new ( ) ;
51
53
52
54
for classifier in classifiers. iter_mut ( ) {
@@ -64,7 +66,7 @@ fn detect_faces(
64
66
}
65
67
66
68
fn detect_faces_yunet (
67
- face_detector : & mut Ptr < dyn FaceDetectorYN > ,
69
+ face_detector : & mut Ptr < FaceDetectorYN > ,
68
70
frame : & Mat ,
69
71
) -> Result < VectorOfRect > {
70
72
let mut detections = Mat :: default ( ) ;
@@ -138,8 +140,8 @@ fn blur_face(frame: &mut Mat, face: Rect) -> Result<()> {
138
140
139
141
fn frame_loop (
140
142
mut capture : Capture ,
141
- classifiers : & mut Vec < & mut objdetect :: CascadeClassifier > ,
142
- face_detector : & mut Ptr < dyn FaceDetectorYN > ,
143
+ classifiers : & mut Vec < & mut CascadeClassifier > ,
144
+ face_detector : & mut Ptr < FaceDetectorYN > ,
143
145
window : Window ,
144
146
) -> Result < ( ) > {
145
147
let mut tick_meter = TickMeter :: default ( ) ?;
@@ -190,10 +192,10 @@ fn main() -> Result<()> {
190
192
191
193
let capture = Capture :: create ( 0 , CAPTURE_WIDTH , CAPTURE_HEIGHT ) ?;
192
194
193
- let mut classifier = objdetect :: CascadeClassifier :: new ( CASCADE_XML_FILE ) ?;
195
+ let mut classifier = CascadeClassifier :: new ( CASCADE_XML_FILE ) ?;
194
196
let mut classifiers = vec ! [ & mut classifier] ;
195
197
196
- let mut face_detector: Ptr < dyn FaceDetectorYN > = < dyn objdetect :: FaceDetectorYN > :: create (
198
+ let mut face_detector = FaceDetectorYN :: create (
197
199
YUNET_MODEL_FILE ,
198
200
"" ,
199
201
Size :: new ( CAPTURE_WIDTH , CAPTURE_HEIGHT ) ,
0 commit comments