JavaCV (OpenCVFrameGrabber) 預設抓取低解析度畫面,導致拍照畫質差(僅 55KB)。
在 start() 前呼叫 setImageWidth / setImageHeight:
import org.bytedeco.javacv.*;
import org.bytedeco.opencv.opencv_core.*;
public class WebcamCapture {
public static void main(String[] args) throws Exception {
int deviceIndex = 0;
int width = 1920; // 目標寬度
int height = 1080; // 目標高度
OpenCVFrameGrabber grabber = new OpenCVFrameGrabber(deviceIndex);
grabber.setImageWidth(width);
grabber.setImageHeight(height);
grabber.start(); // 必須在 start 前設定
Frame frame = grabber.grab();
if (frame != null) {
Java2DFrameConverter converter = new Java2DFrameConverter();
BufferedImage img = converter.getBufferedImage(frame);
javax.imageio.ImageIO.write(img, "jpg", new java.io.File("photo.jpg"));
System.out.println("解析度: " + img.getWidth() + "x" + img.getHeight());
}
grabber.stop();
grabber.close();
}
}
grabber.getImageWidth() 是否生效。FFmpegFrameGrabber,同樣支援 setImageWidth/Height。FrameGrabber.createDefault(deviceIndex) 自動選擇後端。WebcamAndMicrophoneCapture.java 展示完整參數設定與多執行緒擷取。