Я сейчас пытаюсь реализовать сканер для веб-камеры.Моя текущая проблема заключается в том, что я не могу получить высококачественное изображение при использовании Java.Камера, которую я использую, имеет 8-мегапиксельную камеру и выдает отличные изображения, когда я использую Windows «Camera» - приложение.К сожалению, я не могу воспроизвести это качество с JavaCV.
Это (важный) код, который я использую для захвата изображения:
FrameGrabber grabber;
private Java2DFrameConverter frameConverter;
public JavaCVCamera(String imagePath, double rotation) {
this.frameConverter = new Java2DFrameConverter();
this.imagePath = imagePath;
this.rotation = rotation;
this.grabber = new OpenCVFrameGrabber(0);
this.grabber.setImageWidth(3264);
this.grabber.setImageHeight(2448);
try {
this.grabber.start();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void saveImageToFile(boolean applyUpscaling, boolean applyRotation) {
File folder = new File(imagePath);
if (!folder.exists()) {
folder.mkdirs();
}
try {
BufferedImage img = frameConverter.convert(grabber.grab());
if (applyUpscaling) {
img = Thumbnails.of(img).forceSize(3264, 2448).asBufferedImage();
}
if (applyRotation) {
img = rotateImageByDegrees(img, rotation);
}
File path = new File(imagePath + "/img_"
+ LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy_MM_dd_HH_mm_ss")) + "." + "png");
ImageIO.write(img, "png", path);
LOGGER.info("Captured Image: {}", path.toString());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
(Примечание: я не использую масштабирование доувеличьте изображения)
Для вашего понимания, вот пример:
Есть ли способ захвата изображений с тем же разрешением и качеством, что и у приложения Windows Camera?
С уважением, QUE