public static ImageCV getRotatedImage(Mat source, int rotateCvType) { if (rotateCvType < 0) { return ImageCV.toImageCV(source); } Mat srcImg = Objects.requireNonNull(source); ImageCV dstImg = new ImageCV(); Core.rotate(srcImg, dstImg, rotateCvType); return dstImg; }
public static ImageCV flip(Mat source, int flipCvType) { if (flipCvType < 0) { return ImageCV.toImageCV(source); } Objects.requireNonNull(source); ImageCV dstImg = new ImageCV(); Core.flip(source, dstImg, flipCvType); return dstImg; }
public static ImageCV crop(Mat source, Rectangle area) { return ImageCV .toImageCV(Objects.requireNonNull(source).submat(new Rect(area.x, area.y, area.width, area.height))); }
public static ImageCV readImageWithCvException(File file) { if (!file.canRead()) { return null; } Mat img = Imgcodecs.imread(file.getPath()); if (img.width() < 1 || img.height() < 1) { throw new CvException("OpenCV cannot read " + file.getPath()); } return ImageCV.toImageCV(img); }
private PlanarImage getNativeImage(ImageReadParam param) throws IOException { StreamSegment seg = StreamSegment.getStreamSegment(iis, param); ImageDescriptor desc = seg.getImageDescriptor(); int dcmFlags = (canEncodeSigned && desc.isSigned()) ? Imgcodecs.DICOM_IMREAD_SIGNED : Imgcodecs.DICOM_IMREAD_UNSIGNED; // Force JPEG Baseline (1.2.840.10008.1.2.4.50) to YBR_FULL_422 color model when RGB (error made by some // constructors). RGB color model doesn't make sense for lossy jpeg. // http://dicom.nema.org/medical/dicom/current/output/chtml/part05/sect_8.2.html#sect_8.2.1 PhotometricInterpretation pmi = desc.getPhotometricInterpretation(); if (pmi.name().startsWith("YBR") || ("RGB".equalsIgnoreCase(pmi.name()) && params.getJpegMarker() == 0xffc0)) { dcmFlags |= Imgcodecs.DICOM_IMREAD_YBR; } if (seg instanceof FileStreamSegment) { MatOfDouble positions = new MatOfDouble(ExtendSegmentedInputImageStream.getDoubleArray(seg.getSegPosition())); MatOfDouble lengths = new MatOfDouble(ExtendSegmentedInputImageStream.getDoubleArray(seg.getSegLength())); return ImageCV.toImageCV(Imgcodecs.dicomJpgFileRead(((FileStreamSegment) seg).getFilePath(), positions, lengths, dcmFlags, Imgcodecs.IMREAD_UNCHANGED)); } else if (seg instanceof MemoryStreamSegment) { ByteBuffer b = ((MemoryStreamSegment) seg).getCache(); Mat buf = new Mat(1, b.limit(), CvType.CV_8UC1); buf.put(0, 0, b.array()); return ImageCV.toImageCV(Imgcodecs.dicomJpgMatRead(buf, dcmFlags, Imgcodecs.IMREAD_UNCHANGED)); } return null; }
public static ImageCV overlay(Mat source, RenderedImage imgOverlay, Color color) { ImageCV srcImg = ImageCV.toImageCV(Objects.requireNonNull(source)); Mat mask = ImageConversion.toMat(Objects.requireNonNull(imgOverlay)); if (isGray(color) && srcImg.channels() == 1) { Mat grayImg = new Mat(srcImg.size(), CvType.CV_8UC1, new Scalar(color.getRed())); ImageCV dstImg = new ImageCV(); srcImg.copyTo(dstImg); grayImg.copyTo(dstImg, mask); return dstImg; } ImageCV dstImg = new ImageCV(); if (srcImg.channels() < 3) { Imgproc.cvtColor(srcImg, dstImg, Imgproc.COLOR_GRAY2BGR); } else { srcImg.copyTo(dstImg); } Mat colorImg = new Mat(dstImg.size(), CvType.CV_8UC3, new Scalar(color.getBlue(), color.getGreen(), color.getRed())); colorImg.copyTo(dstImg, mask); return dstImg; }
public static ImageCV applyShutter(Mat source, RenderedImage imgOverlay, Color color) { ImageCV srcImg = ImageCV.toImageCV(Objects.requireNonNull(source)); Mat mask = ImageConversion.toMat(Objects.requireNonNull(imgOverlay)); if (isGray(color) && srcImg.channels() == 1) { Mat grayImg = new Mat(srcImg.size(), CvType.CV_8UC1, new Scalar(color.getRed())); ImageCV dstImg = new ImageCV(); srcImg.copyTo(dstImg); grayImg.copyTo(dstImg, mask); return dstImg; } ImageCV dstImg = new ImageCV(); if (srcImg.channels() < 3) { Imgproc.cvtColor(srcImg, dstImg, Imgproc.COLOR_GRAY2BGR); } else { srcImg.copyTo(dstImg); } Mat colorImg = new Mat(dstImg.size(), CvType.CV_8UC3, new Scalar(color.getBlue(), color.getGreen(), color.getRed())); colorImg.copyTo(dstImg, mask); return dstImg; }
public static ImageCV getRotatedImage(Mat source, double angle, double centerx, double centery) { if (isEqualToZero(angle)) { return ImageCV.toImageCV(source); } Mat srcImg = Objects.requireNonNull(source); Point ptCenter = new Point(centerx, centery); Mat rot = Imgproc.getRotationMatrix2D(ptCenter, -angle, 1.0); ImageCV dstImg = new ImageCV(); // determine bounding rectangle Rect bbox = new RotatedRect(ptCenter, srcImg.size(), -angle).boundingRect(); // double[] matrix = new double[rot.cols() * rot.rows()]; // // adjust transformation matrix // rot.get(0, 0, matrix); // matrix[2] += bbox.width / 2.0 - centerx; // matrix[rot.cols() + 2] += bbox.height / 2.0 - centery; // rot.put(0, 0, matrix); Imgproc.warpAffine(srcImg, dstImg, rot, bbox.size()); return dstImg; }
TagD.getTagValue(this, Tag.SamplesPerPixel, Integer.class), bitsStored, banded ? Imgcodecs.ILV_NONE : Imgcodecs.ILV_SAMPLE); return ImageCV.toImageCV(Imgcodecs.dicomRawFileRead(orinigal.get().getAbsolutePath(), positions, lengths, dicomparams, pmi.name())); return ImageCV.toImageCV(Imgcodecs.dicomJpgFileRead(orinigal.get().getAbsolutePath(), positions, lengths, dcmFlags, Imgcodecs.IMREAD_UNCHANGED));