//! 目标检测集成测试。 mod common; use common::{model_path, sample_path}; use ddddocr_core::Detector; use ddddocr_core::traits::Loader; use ddddocr_ort::DetRuntime; use ddddocr_ort::loader::ModelLoader; use image::GenericImageView; /// 检测模型应能从样例图片中找到至少一个目标,且坐标在图片范围内。 #[test] fn det_model_detects_targets_in_image() -> anyhow::Result<()> { let session = ModelLoader::default() .build_for_path(model_path("common_det.onnx")) .expect("模型加载失败"); let det = DetRuntime::new(session); let img = image::open(sample_path("det1.png")).expect("测试图片不存在"); let bboxes = Detector::new(&det).predict(&img)?; assert!(!bboxes.is_empty(), "应检测到至少一个目标"); let (width, height) = img.dimensions(); for bbox in &bboxes { assert!(bbox.x1 >= 0 && bbox.y1 >= 0, "检测框左上角不应为负"); assert!( bbox.x2 <= width as i32 && bbox.y2 <= height as i32, "检测框右下角不应超出图片范围" ); } Ok(()) }