java - OpenCV-Java:VideoCapture读取框架与USB摄像机卡在一起

标签 java opencv java-native-interface

我对OpenCV(Java编程)还很陌生,我正尝试设置一个应用程序以从USB WebCam读取视频帧,并以此开始。

这是我到目前为止关注的文档:https://opencv-java-tutorials.readthedocs.io/en/latest/03-first-javafx-application-with-opencv.html#video-capturing

设置如下:

  • Java版本:10.0.1
  • OpenCV版本:3.3.4和3.2.0,两个版本
  • 均出现相同错误
  • 操作系统:Windows 10 x64
  • .dll放在C:\ Windows下,包含在我的java.library.path中。

  • 我在应用程序中涉及一些其他框架,但是我准备了一个隔离的测试用例以更好地检查问题:
    import org.junit.Test;
    import org.opencv.core.Core;
    import org.opencv.core.Mat;
    import org.opencv.videoio.VideoCapture;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    public class CVCaptureTest {
    
        private static final Logger LOG = LoggerFactory.getLogger(CVCaptureTest.class);
    
        @Test
        public void testFrameRead() {
            System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
            VideoCapture capture = new VideoCapture();
            capture.open(0);
    
            for (int i = 0; i < 100; i ++) {
                if (capture.isOpened()) {
                    Mat frame = new Mat();
                    LOG.info("Capture open. Reading frame...");
                    capture.retrieve(frame);
    
                    LOG.info("Captured: {}", frame.dump());
                }
            }
        }
    }
    

    输出:
    [INFO] Running i.m.r.b.r.c.CVCaptureTest
    20:15:57.757 [main] INFO i.m.r.b.r.c.CVCaptureTest - Capture open. Reading frame...
    

    在此日志行之后,程序将立即挂起,而不会引发任何异常。

    欢迎您对了解冻结原因的任何帮助。

    感谢和问候,
    马蒂亚!

    最佳答案

    尝试使用capture.read(frame);

    关于java - OpenCV-Java:VideoCapture读取框架与USB摄像机卡在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52319747/

    相关文章:

    java - 不同 RDBMS 上的 NamedParameterJDBCTemplate 和函数语法

    c++ - 如何使用 boost base64_text (c++) 将 opencv 图像转换为字符串

    android - 如何在 android studio 项目中添加 JNI 库?

    java - Java 中的 AFOAuth2Client 等价物

    java - 如何选择一个Kafka transaction.id

    c++ - PvBuffer (Pleora SDK) 到 -> Opencv 缓冲区

    java - SWIG 重命名函数

    c++ - WINAPI 消息循环让我抓狂

    Java:BufferedReader 的替代方案

    c++ - 如何解决在 opencv 中显示空图像的问题?