Example usage for org.opencv.core Mat put

List of usage examples for org.opencv.core Mat put

Introduction

In this page you can find the example usage for org.opencv.core Mat put.

Prototype

public int put(int row, int col, byte[] data) 

Source Link

Usage

From source file:com.sikulix.core.SXElement.java

License:Open Source License

protected static Mat makeMat(BufferedImage bImg) {
    Mat aMat = new Mat();
    if (bImg.getType() == BufferedImage.TYPE_INT_RGB) {
        log.trace("makeMat: INT_RGB (%dx%d)", bImg.getWidth(), bImg.getHeight());
        int[] data = ((DataBufferInt) bImg.getRaster().getDataBuffer()).getData();
        ByteBuffer byteBuffer = ByteBuffer.allocate(data.length * 4);
        IntBuffer intBuffer = byteBuffer.asIntBuffer();
        intBuffer.put(data);//w w w  .  ja  v  a  2  s .co  m
        aMat = new Mat(bImg.getHeight(), bImg.getWidth(), CvType.CV_8UC4);
        aMat.put(0, 0, byteBuffer.array());
        Mat oMatBGR = new Mat(bImg.getHeight(), bImg.getWidth(), CvType.CV_8UC3);
        Mat oMatA = new Mat(bImg.getHeight(), bImg.getWidth(), CvType.CV_8UC1);
        java.util.List<Mat> mixIn = new ArrayList<Mat>(Arrays.asList(new Mat[] { aMat }));
        java.util.List<Mat> mixOut = new ArrayList<Mat>(Arrays.asList(new Mat[] { oMatA, oMatBGR }));
        //A 0 - R 1 - G 2 - B 3 -> A 0 - B 1 - G 2 - R 3
        Core.mixChannels(mixIn, mixOut, new MatOfInt(0, 0, 1, 3, 2, 2, 3, 1));
        return oMatBGR;
    } else if (bImg.getType() == BufferedImage.TYPE_3BYTE_BGR) {
        log.error("makeMat: 3BYTE_BGR (%dx%d)", bImg.getWidth(), bImg.getHeight());
        byte[] data = ((DataBufferByte) bImg.getRaster().getDataBuffer()).getData();
        aMat = new Mat(bImg.getHeight(), bImg.getWidth(), CvType.CV_8UC3);
        aMat.put(0, 0, data);
        return aMat;
    } else if (bImg.getType() == BufferedImage.TYPE_4BYTE_ABGR) {
        log.trace("makeMat: TYPE_4BYTE_ABGR (%dx%d)", bImg.getWidth(), bImg.getHeight());
        byte[] data = ((DataBufferByte) bImg.getRaster().getDataBuffer()).getData();
        aMat = new Mat(bImg.getHeight(), bImg.getWidth(), CvType.CV_8UC4);
        aMat.put(0, 0, data);
        Mat oMatBGR = new Mat(bImg.getHeight(), bImg.getWidth(), CvType.CV_8UC3);
        Mat oMatA = new Mat(bImg.getHeight(), bImg.getWidth(), CvType.CV_8UC1);
        java.util.List<Mat> mixIn = new ArrayList<Mat>(Arrays.asList(new Mat[] { aMat }));
        java.util.List<Mat> mixOut = new ArrayList<Mat>(Arrays.asList(new Mat[] { oMatA, oMatBGR }));
        //A 0 - R 1 - G 2 - B 3 -> A 0 - B 1 - G 2 - R 3
        Core.mixChannels(mixIn, mixOut, new MatOfInt(0, 0, 1, 1, 2, 2, 3, 3));
        return oMatBGR;
    } else {
        log.error("makeMat: Type not supported: %d (%dx%d)", bImg.getType(), bImg.getWidth(), bImg.getHeight());
    }
    return aMat;
}

From source file:com.sikulix.core.Visual.java

License:Open Source License

protected static Mat makeMat(BufferedImage bImg) {
    Mat aMat = null;
    if (bImg.getType() == BufferedImage.TYPE_INT_RGB) {
        vLog.trace("makeMat: INT_RGB (%dx%d)", bImg.getWidth(), bImg.getHeight());
        int[] data = ((DataBufferInt) bImg.getRaster().getDataBuffer()).getData();
        ByteBuffer byteBuffer = ByteBuffer.allocate(data.length * 4);
        IntBuffer intBuffer = byteBuffer.asIntBuffer();
        intBuffer.put(data);/*from w w w  .j  a v a  2  s  .  c om*/
        aMat = new Mat(bImg.getHeight(), bImg.getWidth(), CvType.CV_8UC4);
        aMat.put(0, 0, byteBuffer.array());
        Mat oMatBGR = new Mat(bImg.getHeight(), bImg.getWidth(), CvType.CV_8UC3);
        Mat oMatA = new Mat(bImg.getHeight(), bImg.getWidth(), CvType.CV_8UC1);
        List<Mat> mixIn = new ArrayList<Mat>(Arrays.asList(new Mat[] { aMat }));
        List<Mat> mixOut = new ArrayList<Mat>(Arrays.asList(new Mat[] { oMatA, oMatBGR }));
        //A 0 - R 1 - G 2 - B 3 -> A 0 - B 1 - G 2 - R 3
        Core.mixChannels(mixIn, mixOut, new MatOfInt(0, 0, 1, 3, 2, 2, 3, 1));
        return oMatBGR;
    } else if (bImg.getType() == BufferedImage.TYPE_3BYTE_BGR) {
        vLog.error("makeMat: 3BYTE_BGR (%dx%d)", bImg.getWidth(), bImg.getHeight());
    } else {
        vLog.error("makeMat: Type not supported: %d (%dx%d)", bImg.getType(), bImg.getWidth(),
                bImg.getHeight());
    }
    return aMat;
}

From source file:com.trandi.opentld.tld.PatchGenerator.java

License:Apache License

/**
 * //w ww . j a va2 s. c  om
 * @param srcCenter
 * @param dstCenter
 * @param transform OUTPUT
 * @param inverse
 */
private void generateRandomTransform(Point srcCenter, Point dstCenter, Mat transform, boolean inverse) {
    MatOfDouble tempRand = new MatOfDouble(0d, 0d);
    Core.randu(tempRand, lambdaMin, lambdaMax);
    final double[] rands = tempRand.toArray();
    final double lambda1 = rands[0];
    final double lambda2 = rands[1];
    Core.randu(tempRand, thetaMin, thetaMax);
    final double theta = tempRand.toArray()[0];
    Core.randu(tempRand, phiMin, phiMax);
    final double phi = tempRand.toArray()[0];

    // Calculate random parameterized affine transformation A,
    // A = T(patch center) * R(theta) * R(phi)' * S(lambda1, lambda2) * R(phi) * T(-pt)
    final double st = Math.sin(theta);
    final double ct = Math.cos(theta);
    final double sp = Math.sin(phi);
    final double cp = Math.cos(phi);
    final double c2p = cp * cp;
    final double s2p = sp * sp;

    final double A = lambda1 * c2p + lambda2 * s2p;
    final double B = (lambda2 - lambda1) * sp * cp;
    final double C = lambda1 * s2p + lambda2 * c2p;

    final double Ax_plus_By = A * srcCenter.x + B * srcCenter.y;
    final double Bx_plus_Cy = B * srcCenter.x + C * srcCenter.y;

    transform.create(2, 3, CvType.CV_64F);
    transform.put(0, 0, A * ct - B * st);
    transform.put(0, 1, B * ct - C * st);
    transform.put(0, 2, -ct * Ax_plus_By + st * Bx_plus_Cy + dstCenter.x);
    transform.put(1, 0, A * st + B * ct);
    transform.put(1, 1, B * st + C * ct);
    transform.put(1, 2, -st * Ax_plus_By - ct * Bx_plus_Cy + dstCenter.y);

    if (inverse) {
        Imgproc.invertAffineTransform(transform, transform);
    }
}

From source file:com.untref.bordes.HoughCirculos.java

public static BufferedImage implementarCiculos(BufferedImage screen, int acumulador, int radioMin,
        int radioMax) {
    Mat source = new Mat(screen.getHeight(), screen.getWidth(), CvType.CV_8UC3);
    byte[] data = ((DataBufferByte) screen.getRaster().getDataBuffer()).getData();
    source.put(0, 0, data);
    //ImageIO.write(screen, "jpg", "imagen");
    //Mat source = Highgui.imread("test.jpg", Highgui.CV_LOAD_IMAGE_COLOR);
    Mat destination = new Mat(source.rows(), source.cols(), source.type());

    Imgproc.cvtColor(source, destination, Imgproc.COLOR_RGB2GRAY);

    Imgproc.GaussianBlur(destination, destination, new Size(3, 3), 0, 0);

    Mat circles = new Mat();
    Imgproc.HoughCircles(destination, circles, Imgproc.CV_HOUGH_GRADIENT, 1, 30, 10, acumulador, radioMin,
            radioMax);/*from w  w  w.  j av a  2 s. c o m*/

    int radius;
    org.opencv.core.Point pt;
    for (int x = 0; x < circles.cols(); x++) {
        double vCircle[] = circles.get(0, x);

        if (vCircle == null) {
            break;
        }

        pt = new org.opencv.core.Point(Math.round(vCircle[0]), Math.round(vCircle[1]));
        radius = (int) Math.round(vCircle[2]);

        // draw the found circle
        Core.circle(source, pt, radius, new Scalar(150, 0, 0), 2);
        Core.circle(source, pt, 1, new Scalar(0, 0, 0), 2);
    }
    BufferedImage res = matToBufferedImage(source);

    return res;

}

From source file:ctPrincipal.Ruidos.java

private String ruidoGaussiano(int mean, int desv) {
    Mat original_Bgr = image.clone();
    Mat mGaussian_noise = new Mat(original_Bgr.size(), original_Bgr.type());
    randn(mGaussian_noise, mean, desv);/*from   ww  w.jav  a 2 s .  c o m*/
    for (int m = 0; m < original_Bgr.rows(); m++) {
        for (int n = 0; n < original_Bgr.cols(); n++) {
            double[] val = new double[3];
            for (int i = 0; i < original_Bgr.get(m, n).length; i++) {
                val[i] = original_Bgr.get(m, n)[i] + mGaussian_noise.get(m, n)[i];
            }
            original_Bgr.put(m, n, val);
        }
    }
    normalize(original_Bgr, original_Bgr, 0, 255, Core.NORM_MINMAX, CvType.CV_8UC3);
    Imgcodecs.imwrite("OutputImg/gaussian.jpg", original_Bgr);
    return "OutputImg/gaussian.jpg";
}

From source file:ctPrincipal.Ruidos.java

private String ruidoSalPimenta(int min, int max) {
    Mat saltPepper_img = image.clone();
    Mat mSaltPepper_noise = new Mat(saltPepper_img.size(), saltPepper_img.type());
    randn(mSaltPepper_noise, 0, 255);/*from w  ww . j  av a 2 s .co  m*/
    for (int m = 0; m < saltPepper_img.rows(); m++) {
        for (int n = 0; n < saltPepper_img.cols(); n++) {
            double[] val = new double[3];
            if (mSaltPepper_noise.get(m, n)[0] < min && mSaltPepper_noise.get(m, n)[1] < min
                    && mSaltPepper_noise.get(m, n)[2] < min) {
                for (int i = 0; i < saltPepper_img.get(m, n).length; i++) {
                    val[i] = 0;
                }
                saltPepper_img.put(m, n, val);
            }
            if (mSaltPepper_noise.get(m, n)[0] > max && mSaltPepper_noise.get(m, n)[1] > max
                    && mSaltPepper_noise.get(m, n)[2] > max) {
                for (int i = 0; i < saltPepper_img.get(m, n).length; i++) {
                    val[i] = 255;
                }
                saltPepper_img.put(m, n, val);
            }
        }
    }
    normalize(saltPepper_img, saltPepper_img, 0, 255, Core.NORM_MINMAX, CvType.CV_8UC3);
    Imgcodecs.imwrite("OutputImg/saltpepper.jpg", saltPepper_img);
    return "OutputImg/saltpepper.jpg";
}

From source file:cv.faceRecognize.faceRecognizer.java

public Mat ListToMat(List<Integer> a) {
    System.out.println(a);//from www . j  a v a 2  s  . c  o m
    Mat m = new Mat(a.size(), 1, CvType.CV_32SC1);
    //        IntBuffer inf = m.createBuffer();
    System.out.println(m);
    int i = 0;
    for (int lable : a) {
        System.out.println(Arrays.toString(m.get(i, 1)));
        m.put(i, 0, lable);
        System.out.println(Arrays.toString(m.get(i, 0)));
        i += 1;
    }
    System.out.println(m);
    return m;
}

From source file:cx.uni.jk.mms.iaip.mat.MatModel.java

License:Open Source License

/**
 * loads and decodes an image with Java ImageIO.
 * /*www. ja v a 2s. c  o m*/
 * drawback: only gray scale images allowed, fewer file types supported. @see
 * <a
 * href="http://docs.oracle.com/javase/tutorial/2d/images/loadimage.html">
 * java tutorials</a> for details.
 * 
 * @throws UnsupportedImageTypeException
 *             if the image is not an 8 bit gray scale image.
 */
protected Mat loadAndDecodeImageWithJavaImageIO(Path path) throws IOException {
    this.logger.finer("Loading and decoding image with Java ImageIO.");
    BufferedImage img = ImageIO.read(path.toUri().toURL());

    int cvType;
    switch (img.getType()) {
    case BufferedImage.TYPE_BYTE_GRAY:
        cvType = CvType.CV_8U;
        break;
    default:
        throw new UnsupportedImageTypeException();
    }

    Mat mat = new Mat(img.getHeight(), img.getWidth(), cvType);
    mat.put(0, 0, ((DataBufferByte) img.getRaster().getDataBuffer()).getData());
    return mat;
}

From source file:de.vion.eyetracking.cameracalib.calibration.opencv.CameraCalibrator.java

private void calcBoardCornerPositions(Mat corners) {
    final int cn = 3;
    float positions[] = new float[this.mCornersSize * cn];

    for (int i = 0; i < this.mPatternSize.height; i++) {
        for (int j = 0; j < this.mPatternSize.width * cn; j += cn) {
            positions[(int) (i * this.mPatternSize.width * cn + j + 0)] = (2 * (j / cn) + i % 2)
                    * (float) this.mSquareSize;
            positions[(int) (i * this.mPatternSize.width * cn + j + 1)] = i * (float) this.mSquareSize;
            positions[(int) (i * this.mPatternSize.width * cn + j + 2)] = 0;
        }//  w  w  w .j a  va 2 s. c o m
    }
    corners.create(this.mCornersSize, 1, CvType.CV_32FC3);
    corners.put(0, 0, positions);
}

From source file:de.vion.eyetracking.cameracalib.calibration.opencv.CameraCalibrator.java

private double computeReprojectionErrors(List<Mat> objectPoints, List<Mat> rvecs, List<Mat> tvecs,
        Mat perViewErrors) {
    MatOfPoint2f cornersProjected = new MatOfPoint2f();
    double totalError = 0;
    double error;
    float viewErrors[] = new float[objectPoints.size()];

    MatOfDouble distortionCoefficients = new MatOfDouble(this.mDistortionCoefficients);
    int totalPoints = 0;
    for (int i = 0; i < objectPoints.size(); i++) {
        MatOfPoint3f points = new MatOfPoint3f(objectPoints.get(i));
        Calib3d.projectPoints(points, rvecs.get(i), tvecs.get(i), this.mCameraMatrix, distortionCoefficients,
                cornersProjected);/*from   w  ww .  ja v a 2  s  .  c o  m*/
        error = Core.norm(this.mCornersBuffer.get(i), cornersProjected, Core.NORM_L2);

        int n = objectPoints.get(i).rows();
        viewErrors[i] = (float) Math.sqrt(error * error / n);
        totalError += error * error;
        totalPoints += n;
    }
    perViewErrors.create(objectPoints.size(), 1, CvType.CV_32FC1);
    perViewErrors.put(0, 0, viewErrors);

    return Math.sqrt(totalError / totalPoints);
}