win10 64位系统
java version “1.8.0_172”
摄像头:罗技C920
javacv版本:1.4.2
<dependency> <groupId>org.bytedeco</groupId> <artifactId>javacv-platform</artifactId> <version>1.4.2</version> </dependency>
OpenCVFrameGrabber设置分辨率为1080P后出现图像扭曲的情况。如下图所示:
![[BUG记录]javacv连接1080p摄像头图像扭曲、视频卡顿问题解决记录 第1张-穆世明博客 [BUG记录]javacv连接1080p摄像头图像扭曲、视频卡顿问题解决记录 (https://mushiming.com/) 第1张](/img-blog.csdnimg.cn/773ea289d4554794bd76401596c7bca3.jpg)
![[BUG记录]javacv连接1080p摄像头图像扭曲、视频卡顿问题解决记录 第2张-穆世明博客 [BUG记录]javacv连接1080p摄像头图像扭曲、视频卡顿问题解决记录 (https://mushiming.com/) 第2张](/img-blog.csdnimg.cn/9a2982e484e34792b81d305c7e629303.jpg)
![[BUG记录]javacv连接1080p摄像头图像扭曲、视频卡顿问题解决记录 第3张-穆世明博客 [BUG记录]javacv连接1080p摄像头图像扭曲、视频卡顿问题解决记录 (https://mushiming.com/) 第3张](/img-blog.csdnimg.cn/ec2395a378474ee8828d65dbf2db763c.jpg)
import org.bytedeco.javacv.*; import javax.swing.*; public class AAA {
public static void main(String[] args) throws Exception {
OpenCVFrameGrabber grabber = new OpenCVFrameGrabber(0); grabber.setFormat("MJPG"); //grabber.setFrameRate(1); grabber.setImageWidth(1920); grabber.setImageHeight(1080); grabber.start(); System.out.println(grabber.getFormat()); System.out.println(grabber.getFrameRate()); CanvasFrame canvas = new CanvasFrame(""); canvas.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); while (true) {
if (!canvas.isEnabled()) {
grabber.stop(); System.exit(0); } Frame frame = grabber.grabFrame(); canvas.showImage(frame); } } }
设置format为MJPG,且不要设置frameRate。
//略 OpenCVFrameGrabber grabber = new OpenCVFrameGrabber(0); grabber.setFormat("MJPG"); //grabber.setFrameRate(1); 设置帧率会使设置的格式失效 grabber.setImageWidth(1920); grabber.setImageHeight(1080); grabber.start(); //略
![[BUG记录]javacv连接1080p摄像头图像扭曲、视频卡顿问题解决记录 第4张-穆世明博客 [BUG记录]javacv连接1080p摄像头图像扭曲、视频卡顿问题解决记录 (https://mushiming.com/) 第4张](/img-blog.csdnimg.cn/b733e76d3a2441d5bac29a9d45675db9.jpg)
![[BUG记录]javacv连接1080p摄像头图像扭曲、视频卡顿问题解决记录 第5张-穆世明博客 [BUG记录]javacv连接1080p摄像头图像扭曲、视频卡顿问题解决记录 (https://mushiming.com/) 第5张](/img-blog.csdnimg.cn/ef521eb597aa4d078377a49a466a50ad.jpg)
![[BUG记录]javacv连接1080p摄像头图像扭曲、视频卡顿问题解决记录 第6张-穆世明博客 [BUG记录]javacv连接1080p摄像头图像扭曲、视频卡顿问题解决记录 (https://mushiming.com/) 第6张](/img-blog.csdnimg.cn/7aa37266da814808a1a905e93592dd49.jpg)
从发现问题到解决一共花了两天,时间主要浪费在了搭建C++环境(因为从外网查到的一篇资料说可能是因为Java的性能问题),但是用C++调用opencv也会出现相同的扭曲现象(但C++打开摄像头的速度比Java要快很多).
后续自己乱试才试出来是因为设置了帧率的问题。。