这个项目中使用了djl api中的ai.djl.modality.cv.Image 和 class ai.djl.modality.cv.output.DetectedObjects
在idea中运行项目是正常的,打成jar包后运行就有这个问题。jar包中的djl api 也是存在的,求解!
jdk1.8 djl0.11.0
代码:
YoloV5Translator translate = YoloV5Translator.builder()
.optSynsetArtifactName("coco.names").build();
Criteria<Image, DetectedObjects> criteria =
Criteria.builder().setTypes(Image.class, DetectedObjects.class)
.optDevice(Device.cpu())
.optModelUrls(AsyncTask.class.getResource("/yolov5s").getPath())
.optModelName("yolov5s.torchscript.pt")
.optTranslator(translate)
.optEngine("PyTorch")
.build();
System.out.println(criteria);
//下面这步ModelZoo.loadModel 加载criteria报错
try (ZooModel<Image, DetectedObjects> model = ModelZoo.loadModel(criteria)) {
VideoCapture capture = new VideoCapture();
capture.open("rtsp://admin:admin@"+ip+":554/h264/ch1/sub/av_stream");
if (!capture.isOpened()) {
System.out.println("Camera Error!");
} else {
Mat frame = new Mat();//创建一个输出帧
int num=0;
boolean flag = capture.read(frame);//read方法读取摄像头的当前帧
while (flag) {
//重新设置图片的宽高
Size sz = new Size(640, 480);
Mat im = new Mat();
Imgproc.resize(frame, im, sz);
HighGui.imshow("yolov5", im);
HighGui.waitKey(20);
if(num % 50 == 0){
detect(im, model,ip);
}
if(num>200000){
num = 0;
}else{
num++;
}
flag = capture.read(frame);
}
capture.release();
}
} catch (RuntimeException | ModelException | IOException | TranslateException e) {
e.printStackTrace();
}