调用javacv进行人脸识别时报错
相关代码
public static void test2() throws FFmpegFrameGrabber.Exception {
String path = "D:\\OpenCV\\opencv-4.6.0\\data\\haarcascades\\haarcascade_frontalface_default.xml";
CascadeClassifier classifier = new CascadeClassifier(path);
String str = "D:\\test1.mp4";
FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(str);
CanvasFrame canvasFrame = new CanvasFrame("Video");
grabber.start();
OpenCVFrameConverter.ToMat converter = new OpenCVFrameConverter.ToMat();
Frame frame;
while ((frame = grabber.grab()) != null){
Mat mat = converter.convert(frame);
Mat gray = new Mat();
// 转换为灰度图像
opencv_imgproc.cvtColor(mat, gray, opencv_imgproc.COLOR_BGR2GRAY);
//检测人脸
RectVector rectVector = new RectVector();
//报错位置
classifier.detectMultiScale(gray,rectVector);
for (Rect rect : rectVector.get()){
opencv_imgproc.rectangle(mat, new Point(rect.x(), rect.y()),new Point(rect.x() + rect.width(), rect.y() + rect.height()), new Scalar(0,0, 0, 255));
}
canvasFrame.showImage(frame);
}
grabber.release();
}
报错内容
java.lang.RuntimeException: OpenCV(4.5.3) D:\a\javacpp-presets\javacpp-presets\opencv\cppbuild\windows-x86_64\opencv-4.5.3\modules\objdetect\src\cascadedetect.cpp:1689: error: (-215:Assertion failed) !empty() in function 'cv::CascadeClassifier::detectMultiScale'
添加jar包
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>javacv-platform</artifactId>
<version>1.5.6</version>
</dependency>