>source

RTSP 비디오 스트림 처리 (ALPR의 특정 프레임 표시 및 처리 모두)에 OpenCV를 사용하는 멀티 카메라 소프트웨어를 만들려고합니다. 내가 가장 오랫동안 겪고있는 문제는 "grab ()"프레임을 사용하는 각 카메라에 대해 스레드를 사용하면서 항상 최신 프레임을 얻을 수 있도록 다른 스레드에서이를 검색하고 처리하는 것입니다.

Runnable streamGrabTask= new Runnable() {
        @Override
        public void run() {
            while (!Thread.currentThread().isInterrupted()) {
                stream.grab();
            }
        }
    };

여러 대의 카메라를 사용하면 리소스가 매우 빠르게 소모됩니다. VideoIo 속성을 사용해 보았지만 아무런 효과가 없습니다.

VideoCapture.set(Videoio.CAP_PROP_POS_FRAMES, anyInt);
VideoCapture.get(Videoio.CAP_PROP_POS_FRAMES); //returns 0 no matter what
VideoCapture.set(Videoio.CAP_PROP_BUFFERSIZE, anyInt);
VideoCapture.get(Videoio.CAP_PROP_BUFFERSIZE); //returns 0.0 no matter what

표시 및 처리 작업은 이상적으로 다음과 같으며 다른 스레드를 잡을 필요가 없습니다.

Runnable displayTask= new Runnable() {
        @Override
        public void run() {
                stream.grab();
                stream.retrieve(concurrentMatMap.get(imageView.getId()));
         //stuff hapenning here
        }
    };
    ScheduledExecutorService executorService= Executors.newSingleThreadScheduledExecutor();
    executorService.scheduleAtFixedRate(displayTask, 500, 200, TimeUnit.MILLISECONDS);

그러나 이와 같이 디스플레이가 뒤쳐지고 제어 할 수없는 내부 버퍼에서 프레임을 가져옵니다.

opencv_java451, JavaFX11 및 Java 15를 사용하고 있습니다. 각 카메라에 대해 실제 스레드를 사용할 필요없이 최신 프레임을 캡처 할 수있는 방법이 있습니까? 아니면 버퍼 크기 또는 Pos_frames를 고려하도록 속성을 고려할 수있는 방법이 있습니까? 그렇지 않은 경우 실제로 최신 OpenCV에 대한 대안이 있습니까? Xuggler가 중지되고 VLCJ가 지불되고 리소스가 소모되며 신뢰할 수없는 멀티 스레드입니다.

감사합니다!

  • 답변 # 1

    저는 몇 년 동안 Xuggler 포크를 유지하고 있습니다. 당신은 볼 수 있습니다 https://github.com/olivierayache/xuggle-xuggler

    답변 해주셔서 감사합니다! 제가 확인하겠습니다. 새 릴리스가 있습니까? 아니면 라이브러리를 컴파일해야합니까? 그런 건 경험이 없어요 ..

    Adrian Radulescu2021-02-24 04:20:21

    마지막 스냅 샷은 여기 dl.cloudsmith.io/public/olivier-ayache/first-repo/maven/xuggle/…

    Olivier Ayache2021-02-24 04:20:21

    안돼 ..

    Adrian Radulescu2021-02-24 04:20:21

    이 빌드는 Linux 및 Windows 용입니다. 어떤 플랫폼으로 작업합니까?

    Olivier Ayache2021-02-24 04:20:21

    Windows로 작업하고 있습니다. 또한 최신 버전의 Xuggler가 "진실 상태"없이 최신 프레임을 얻는 데 도움이 될 것이라고 생각하십니까? 나는 이미 5.4로 테스트했으며 뒤쳐져 있습니다. 그리고 링크가 작동하지 않음을 의미했습니다.

    Adrian Radulescu2021-02-24 04:20:21

  • 이전 Swift 애플리케이션 시작 후 Quartz 이벤트를 게시하는 방법은 무엇입니까?
  • 다음 css : 내 웹 사이트는 모든 곳에서 반응하지만 브라우저 창 크기를 조정할 때