Search in sources :

Example 6 with Size

use of org.bytedeco.opencv.opencv_core.Size in project vantiq-extension-sources by Vantiq.

the class RetrieverBase method convertMatToJpeg.

/**
 * Converts an image into jpeg format and releases the Mat that held the original image
 * @param image The image to convert
 * @return      The bytes of the image in jpeg format, or null if it could not be converted
 */
byte[] convertMatToJpeg(Mat image) {
    // JPG conversion requires a buffer into which we'll place the jpg.  However, we have to guess at the size
    // beforehand.  To do this, we'll work out the size of the uncompressed image in the passed-in Mat,
    // and use that as our buffer size.  JPG's are compressed, so the results should be smaller...
    Size s = image.size();
    int maxSize = s.height() * s.width();
    byte[] buf = new byte[maxSize];
    BytePointer bytes = new BytePointer(buf);
    if (log.isTraceEnabled()) {
        log.trace("Image facts: size: h:{}, w: {}, using buffer size (h*w): {}", s.height(), s.width(), maxSize);
    }
    // Translate the image into jpeg, return null if it cannot
    byte[] imageBytes = null;
    if (image.empty()) {
        log.warn("Cannot convert empty image to jpg");
    } else if (imencode(".jpg", image, bytes)) {
        if (log.isTraceEnabled()) {
            log.trace("BytePointer Info: limit: {}, position: {}, capacity: {}", bytes.limit(), bytes.position(), bytes.capacity());
        }
        imageBytes = bytes.getStringBytes();
        if (log.isTraceEnabled()) {
            log.trace("JPG length is: {}", imageBytes.length);
        }
    } else {
        log.error("Failed to convert image to jpeg");
    }
    image.release();
    return imageBytes;
}
Also used : Size(org.bytedeco.opencv.opencv_core.Size) BytePointer(org.bytedeco.javacpp.BytePointer)

Example 7 with Size

use of org.bytedeco.opencv.opencv_core.Size in project qupath by qupath.

the class TypeAdaptersCVTest method testSizeAndScalars.

@SuppressWarnings("unchecked")
@Test
public void testSizeAndScalars() {
    var gson = new GsonBuilder().registerTypeAdapterFactory(OpenCVTypeAdapters.getOpenCVTypeAdaptorFactory()).create();
    try (PointerScope scope = new PointerScope()) {
        // Test scalar
        var scalarArray = new double[] { 1.1, 2.2, 3.3, 4.4 };
        for (int n = 0; n <= 4; n++) {
            var arr = Arrays.copyOf(scalarArray, n);
            Scalar scalar;
            if (n == 0)
                scalar = new Scalar();
            else if (n == 1)
                scalar = new Scalar(arr[0]);
            else if (n == 2)
                scalar = new Scalar(arr[0], arr[1]);
            else if (n == 3)
                scalar = new Scalar(arr[0], arr[1], arr[2], 0.0);
            else
                scalar = new Scalar(arr[0], arr[1], arr[2], arr[3]);
            assertArrayEquals(arr, scalarToArray(scalar, n), 1e-3);
            var scalarJson = gson.toJson(scalar);
            assertArrayEquals(arr, scalarToArray(gson.fromJson(scalarJson, Scalar.class), n), 1e-3);
        }
        // Test size
        for (int w : new int[] { 102, 234, -1 }) {
            var size = new Size(w, w * 2);
            var sizeJson = gson.toJson(size);
            var size2 = gson.fromJson(sizeJson, Size.class);
            assertEquals(size.width(), size2.width());
            assertEquals(size.height(), size2.height());
        }
    }
}
Also used : GsonBuilder(com.google.gson.GsonBuilder) Size(org.bytedeco.opencv.opencv_core.Size) PointerScope(org.bytedeco.javacpp.PointerScope) Scalar(org.bytedeco.opencv.opencv_core.Scalar) Test(org.junit.jupiter.api.Test)

Example 8 with Size

use of org.bytedeco.opencv.opencv_core.Size in project javacv by bytedeco.

the class Similarity method main.

public static void main(String[] args) {
    Mat img1 = opencv_imgcodecs.imread("face.jpg");
    Mat img2 = img1.clone();
    opencv_imgproc.GaussianBlur(img2, img2, new Size(15, 15), 10);
    double psnr = getPSNR(img1, img2);
    Scalar mssim = getMSSIM(img1, img2);
    System.out.println("PSNR: " + psnr);
    System.out.printf("SSIM: %f, %f, %f\n", mssim.get(0), mssim.get(1), mssim.get(2));
}
Also used : Mat(org.bytedeco.opencv.opencv_core.Mat) Size(org.bytedeco.opencv.opencv_core.Size) Scalar(org.bytedeco.opencv.opencv_core.Scalar)

Example 9 with Size

use of org.bytedeco.opencv.opencv_core.Size in project javacv by bytedeco.

the class RealSense2FrameGrabber method grabCVFrame.

private Frame grabCVFrame(int streamType, int streamIndex, int iplDepth, int iplChannels) throws Exception {
    Frame outputFrame;
    // get frame of type if available
    rs2_frame frame = findFrameByStreamType(this.frameset, streamType, streamIndex);
    if (frame == null)
        return null;
    // get frame data
    Pointer frameData = getFrameData(frame);
    Size size = getFrameSize(frame);
    // create cv frame
    IplImage image = IplImage.createHeader(size.width(), size.height(), iplDepth, iplChannels);
    cvSetData(image, frameData, size.width() * iplChannels * iplDepth / 8);
    outputFrame = converter.convert(image);
    // add timestamp
    double timestamp = getFrameTimeStamp(frame);
    outputFrame.timestamp = Math.round(timestamp);
    // cleanup
    rs2_release_frame(frame);
    return outputFrame;
}
Also used : IplImage(org.bytedeco.opencv.opencv_core.IplImage) Size(org.bytedeco.opencv.opencv_core.Size) Pointer(org.bytedeco.javacpp.Pointer) IntPointer(org.bytedeco.javacpp.IntPointer)

Example 10 with Size

use of org.bytedeco.opencv.opencv_core.Size in project qupath by qupath.

the class TypeAdaptersCVTest method testSizeAndScalars.

@SuppressWarnings("unchecked")
@Test
public void testSizeAndScalars() {
    var gson = new GsonBuilder().registerTypeAdapterFactory(OpenCVTypeAdapters.getOpenCVTypeAdaptorFactory()).create();
    try (PointerScope scope = new PointerScope()) {
        // Test scalar
        var scalarArray = new double[] { 1.1, 2.2, 3.3, 4.4 };
        for (int n = 0; n <= 4; n++) {
            var arr = Arrays.copyOf(scalarArray, n);
            Scalar scalar;
            if (n == 0)
                scalar = new Scalar();
            else if (n == 1)
                scalar = new Scalar(arr[0]);
            else if (n == 2)
                scalar = new Scalar(arr[0], arr[1]);
            else if (n == 3)
                scalar = new Scalar(arr[0], arr[1], arr[2], 0.0);
            else
                scalar = new Scalar(arr[0], arr[1], arr[2], arr[3]);
            assertArrayEquals(arr, scalarToArray(scalar, n), 1e-3);
            var scalarJson = gson.toJson(scalar);
            assertArrayEquals(arr, scalarToArray(gson.fromJson(scalarJson, Scalar.class), n), 1e-3);
        }
        // Test size
        for (int w : new int[] { 102, 234, -1 }) {
            var size = new Size(w, w * 2);
            var sizeJson = gson.toJson(size);
            var size2 = gson.fromJson(sizeJson, Size.class);
            assertEquals(size.width(), size2.width());
            assertEquals(size.height(), size2.height());
        }
    }
}
Also used : GsonBuilder(com.google.gson.GsonBuilder) Size(org.bytedeco.opencv.opencv_core.Size) PointerScope(org.bytedeco.javacpp.PointerScope) Scalar(org.bytedeco.opencv.opencv_core.Scalar) Test(org.junit.jupiter.api.Test)

Aggregations

Size (org.bytedeco.opencv.opencv_core.Size)16 Mat (org.bytedeco.opencv.opencv_core.Mat)12 Scalar (org.bytedeco.opencv.opencv_core.Scalar)5 FaceRecognizer (org.bytedeco.opencv.opencv_face.FaceRecognizer)3 FisherFaceRecognizer (org.bytedeco.opencv.opencv_face.FisherFaceRecognizer)3 GsonBuilder (com.google.gson.GsonBuilder)2 PointerScope (org.bytedeco.javacpp.PointerScope)2 IplImage (org.bytedeco.opencv.opencv_core.IplImage)2 MatVector (org.bytedeco.opencv.opencv_core.MatVector)2 Test (org.junit.jupiter.api.Test)2 Graphics2D (java.awt.Graphics2D)1 BufferedImage (java.awt.image.BufferedImage)1 DataBufferByte (java.awt.image.DataBufferByte)1 BigDecimal (java.math.BigDecimal)1 ByteBuffer (java.nio.ByteBuffer)1 DoubleBuffer (java.nio.DoubleBuffer)1 IntBuffer (java.nio.IntBuffer)1 ArrayList (java.util.ArrayList)1 BytePointer (org.bytedeco.javacpp.BytePointer)1 IntPointer (org.bytedeco.javacpp.IntPointer)1