Commit 14042025

This commit is contained in:
2025-04-14 18:16:42 +07:00
parent fb5d143cd1
commit ca3fa0ed08
8 changed files with 153 additions and 109 deletions

View File

@@ -10,6 +10,9 @@ import javafx.scene.control.Label;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.image.Image;
import javafx.scene.image.PixelFormat;
import javafx.scene.image.WritableImage;
import org.bytedeco.javacv.Frame;
import org.bytedeco.javacv.Java2DFrameConverter;
import org.bytedeco.javacv.OpenCVFrameConverter;
import org.bytedeco.opencv.global.opencv_core;
@@ -22,11 +25,13 @@ import org.bytedeco.opencv.opencv_core.UMat;
import org.tinylog.Logger;
import java.awt.image.BufferedImage;
import java.awt.image.DataBufferByte;
import java.io.File;
import java.io.InputStream;
import java.net.Inet4Address;
import java.net.Inet6Address;
import java.net.InetAddress;
import java.nio.ByteBuffer;
import java.nio.file.Files;
import java.nio.file.Path;
import java.time.LocalDateTime;
@@ -756,4 +761,33 @@ public class SomeCodes {
public static boolean IsBlurred(UMat mat, double threshold){
return CalculateSharpness(mat)<threshold;
}
public static Image MatToImage(Mat mat){
Frame frame = matconverter.convert(mat);
BufferedImage bufferedImage = matToBufferedImage(mat);
return SwingFXUtils.toFXImage(bufferedImage, null);
}
public static WritableImage matToWritableImage(Mat mat){
int cols = mat.cols();
int rows = mat.rows();
WritableImage writableImage = new WritableImage(cols, rows);
ByteBuffer buffer = mat.createBuffer();
PixelFormat<ByteBuffer> pixelFormat = PixelFormat.getByteRgbInstance();
writableImage.getPixelWriter().setPixels(0, 0, cols, rows, pixelFormat, buffer, cols * 3);
return writableImage;
}
public static BufferedImage matToBufferedImage(Mat mat){
int type = BufferedImage.TYPE_BYTE_GRAY;
if (mat.channels() > 1) {
type = BufferedImage.TYPE_3BYTE_BGR;
}
BufferedImage image = new BufferedImage(mat.cols(), mat.rows(), type);
byte[] data = ((DataBufferByte) image.getRaster().getDataBuffer()).getData();
mat.data().get(data);
return image;
}
}