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;
}
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());
}
}
}
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));
}
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;
}
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());
}
}
}
Aggregations