YOLODetector is working (25/02/2025)
This commit is contained in:
@@ -9,7 +9,10 @@ import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import org.bytedeco.javacv.Frame;
|
||||
import org.bytedeco.javacv.FrameGrabber;
|
||||
import org.bytedeco.opencv.opencv_core.Mat;
|
||||
import org.bytedeco.javacv.OpenCVFrameConverter;
|
||||
import org.opencv.core.Mat;
|
||||
import org.opencv.core.Size;
|
||||
import org.opencv.imgproc.Imgproc;
|
||||
import org.tinylog.Logger;
|
||||
|
||||
public class GrabbingTask implements Runnable {
|
||||
@@ -98,30 +101,52 @@ public class GrabbingTask implements Runnable {
|
||||
isGrabbing.set(false);
|
||||
}
|
||||
|
||||
|
||||
private void processFrame(Frame fr){
|
||||
if (fr!=null){
|
||||
updateHQFrame(fr);
|
||||
updateHQBase64(SomeCodes.FrameToBase64(fr));
|
||||
Frame resized = SomeCodes.ResizeFrame(fr, lowquality_width, lowquality_height);
|
||||
updateLQFrame(resized);
|
||||
updateLQBase64(SomeCodes.FrameToBase64(resized));
|
||||
} else updateMessage("processFrame have null frame");
|
||||
if (fr!=null && fr.image!=null && fr.imageWidth>0 && fr.imageHeight>0){
|
||||
try(var converter = new OpenCVFrameConverter.ToOrgOpenCvCoreMat()){
|
||||
org.opencv.core.Mat mat = converter.convert(fr);
|
||||
if (mat.cols()>0 && mat.rows()>0){
|
||||
updateHQFrame(fr);
|
||||
updateHQBase64(SomeCodes.MatToBase64(mat));
|
||||
Size lowsize = new Size(lowquality_width, lowquality_height);
|
||||
Mat resized = new Mat();
|
||||
Imgproc.resize(mat, resized, lowsize);
|
||||
if (resized.cols()>0 && resized.rows()>0){
|
||||
Frame resizedFrame = SomeCodes.CoreMatConverter.convert(resized);
|
||||
updateLQFrame(resizedFrame);
|
||||
updateLQBase64(SomeCodes.MatToBase64(resized));
|
||||
} else System.out.println("processFrame resized size is 0");
|
||||
DetectYolo(mat);
|
||||
resized.release();
|
||||
} else System.out.println("processFrame Mat size is 0");
|
||||
mat.release();
|
||||
} catch (Exception e){
|
||||
Logger.error("Error processing frame: "+e.getMessage());
|
||||
}
|
||||
|
||||
} else {
|
||||
System.out.println("processFrame have null frame");
|
||||
updateMessage("processFrame have null frame");
|
||||
}
|
||||
}
|
||||
|
||||
//TODO masih trouble di sini
|
||||
private void DetectYolo(Frame frame){
|
||||
if (frame!=null){
|
||||
private void DetectYolo(Mat mat){
|
||||
if (mat!=null && mat.cols()>0 && mat.rows()>0){
|
||||
//System.out.println("DetectYolo mat cols = "+mat.cols()+", rows = "+mat.rows());
|
||||
try{
|
||||
Mat processed = yolo.Detect(frame);
|
||||
Frame yoloFrame = SomeCodes.CoreMatConverter.convert(processed);
|
||||
Mat[] processed = yolo.Detect(mat);
|
||||
Mat yolomat = yolo.Process(mat, processed[0], processed[1]);
|
||||
Frame yoloFrame = SomeCodes.CoreMatConverter.convert(yolomat);
|
||||
updateYoloFrame(yoloFrame);
|
||||
updateYoloBase64(SomeCodes.FrameToBase64(yoloFrame));
|
||||
updateYoloBase64(SomeCodes.MatToBase64(yolomat));
|
||||
|
||||
} catch (Exception e){
|
||||
System.out.println("error processing YOLO, Message : "+e.getMessage());
|
||||
updateYoloFrame(null);
|
||||
updateYoloBase64("");
|
||||
}
|
||||
}
|
||||
} else System.out.println("DetectYolo mat is null");
|
||||
|
||||
}
|
||||
|
||||
@@ -150,7 +175,6 @@ public class GrabbingTask implements Runnable {
|
||||
if (framecount<Integer.MAX_VALUE) framecount++; else framecount = 0;
|
||||
if (framecount % skippedframes == 0) {
|
||||
processFrame(frame);
|
||||
DetectYolo(frame);
|
||||
}
|
||||
} catch (Exception e){
|
||||
Logger.error("Error grabbing frame: "+e.getMessage());
|
||||
|
||||
Reference in New Issue
Block a user