You'll need to import these classes
import org.bytedeco.javacv.CanvasFrame;
import org.bytedeco.javacv.Frame;
import org.bytedeco.javacv.FrameGrabber;
import org.bytedeco.javacv.OpenCVFrameConverter;
import org.bytedeco.javacv.OpenCVFrameGrabber;then your main should look a bit like this - though it might need some optimising - this is just something quick I put together:
public static void main(String[] args) {
YOLONet yolo = new YOLONet(
"yolov4.cfg",
"yolov4.weights",
"coco.names",
608, 608);
yolo.setup();
OpenCVFrameConverter.ToMat toMatConverter = new OpenCVFrameConverter.ToMat();
OpenCVFrameGrabber openCVFrameGrabber = new OpenCVFrameGrabber(0);
try {
openCVFrameGrabber.start();
CanvasFrame canvasFrame = new CanvasFrame("Yolo");
Frame frame = openCVFrameGrabber.grab();
canvasFrame.setCanvasSize(frame.imageWidth, frame.imageHeight);
while (canvasFrame.isVisible() && (frame != null)) {
Mat image = toMatConverter.convert(frame);
List<ObjectDetectionResult> results = yolo.predict(image);
System.out.printf("Detected %d objects:\n", results.size());
for (ObjectDetectionResult result : results) {
System.out.printf("\t%s - %.2f%%\n", result.className, result.confidence * 100f);
// annotate on image
rectangle(image,
new Point(result.x, result.y),
new Point(result.x + result.width, result.y + result.height),
Scalar.MAGENTA, 2, LINE_8, 0);
}
canvasFrame.showImage(toMatConverter.convert(image));
frame = openCVFrameGrabber.grab();
}
} catch (
FrameGrabber.Exception e) {
e.printStackTrace();
}
}