List of usage examples for org.opencv.core Mat put
public int put(int row, int col, byte[] data)
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); }