자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다. 
  • 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)

Delphi Delphi OpenCV 에 관하여...

2019.04.11 19:27

아크나톤 조회 수:1652

본 게시판은 개발자들이 자유롭게 질문과 답변을 공유하는 게시판입니다.
* 따라서 최대한 정중하게 질문을 올려 주세요.
* 질문을 상세히 작성해 주실 수록 좋은 답변이 올라 옵니다.
* 다른 분들도 참고할 수 있도록 결과 댓글 필수(또는 감사 댓글)
(결과 댓글을 달지 않는 경우 다음 질문에 대한 답변이 달리지 않는 불이익이 있을 수 있습니다.)
-----------------------------------------------------------------------------------------------

- width=2560 정도의 H.264엔코딩된 영상을 RTSP로 Open

- 카메라 15대의 영상을 하나의 모니터에 디스플레이

- 위와 같은 모니터가 약 10대 (즉, 하나의 시스템에서 rtsp영상을 최대 150개를 재생하는 셈)

 

한번 해보려고 합니다.

 

라이브러리는 Laex Delphi OpenCV 를 사용하는게 일단 가장 빠른거 같아 시도해 봄.

 

 

- Multi-Device Application 으로

- 그냥 OpenCV로 영상을 Capture하면 영상이 클 경우 다 깨져서 들어오니 TocvFFMpegIPCamSource로

  rtsp영상을 불러옴.

- 코덱도 잘 찾아 영상을 TImage 또는 TocvViewFMX에 어떤 필터링도 없이 TocvFFMPegIPCamSource의 IocvImage 원영상을 뿌려줌.

 

[테스트 해본 결과]

1. 다채널 영상 뷰어로 부적합.

   Intel(R) Core(TM) i5-7500 4Core, Ram 8Gb에서 위 조건의 영상 1개를 여는데 CPU 점유율은 10~14%.

   소스 수정해서 TocvFFMpegIPCamSource의 스레드 죽여도 봄(재생 속도 향상있음).

   Application.OnIdle 하에서 9채널정도는 부드럽게 돌아감(CPU점유율의 여유가 있으니까)

   TocvFFMpegIPCamSource.OnImage를 사용해보기도 함(Application.OnIdle때보다 영상재생 부드럽지 못함).

2. FMX에서 개발할 경우이므로 어떤 코딩 없이 GPU가속은 하는것으로 보이는데 Windows Apllication에서 테스트할때와

   퍼포먼스에 차이가 없음.

   작업관리자에서만 확인한 바 Windows Application에서는 GPU가 0%로 멍때리고 있던 것이 FMX에서는 35%~45%까지

   매우 열심히 뭔가를 하고 있다고 나오는데 왜 CPU 점유율은 영상 9개만 띄우면 점유율 100%에 육박하는지 지식이 짧아

   현상만 파악함.

3. 동일한 영상을 PasLibVLCPlayer에서 돌리면 CPU점유율 각각 1~2% 수준이라 깜놀.(곰플레이어는 6~8% 수준)

4-1. 해당 라이브러리 개발자 Leax에게 질의한 결과.

   TocvFFMpegIPCamSource는 다채널 뷰어로 적합하지 않다! 그리고 델파이 스레드는 그닥 훌륭하지 않다 bla bla bla...로 결론.

4-2. Mitov Software 역시 마찬가지...

      VideoLab 컴포넌트 겁나 많고 가지고 놀게 많다.

      RTSP 영상 9개 화면에 띄우는데 코딩 제로. 3분이면 끝나니 대단하죠.

      RTSP영상을 로딩하는 컴포넌트는 TVLIPCamera외 선택의 여지가 없으므로 테스트해본 결과 역시 문제는 CPU점유율.

      6개만 열어도 CPU점유율은 꽉 차버립니다 ㅠ.ㅠ

      하지만.... OpenCV 날코딩 안해도 되는 이점은 분명히 고무적이고 놀라운 일이긴 하나.

      그래픽 카드 갯수와 gpu가속 지정까지 가능하지만 Win32에서만 일부잘 쓰지 않는 컴퍼넌트에서만 국한된 점.

      Mitov씨가 귀찮을 정도로 질문을 해본 결과, 현재 FMX에서 Win VCL Application에서 지원하는 컴퍼넌트 포함할 계획이고 FMX에서는 굳이 GPU가속은 별도로 신경 안써도 되는 부분이라 생각한다고 하심.

(위의 두 라이브러리는 감히 폄하는거 아닙니다;; 대단하지요.  제가 목표치가 높은 데모를 계획하고 있다보니 그점에 핵심을 맞춘것이라...)

5. 오기가 생겨 TocvFFMpeg소스에서 스레드도 죽여보고 ffMpeg 헤더파일 libavcodec에서 Av_Find_Codec2도 내맘대로 코덱을 지정해서 테스트해봤는데 지식이 짧아 포기.

하나의 시스템에서 rtsp영상 150개를 재생하는데 끊김이 없어야하면서 이 것을 만족하려면 PasLibVlcPlayer가 답인가...

그렇다면 영상 ROI는 어떻게든 VLC 라이브러리에서 한다 치더라도 영상 ROI한 4개의 영상(이미지)을 것을 하나의 영상으로 Merge한다거나 OpenCV에서 할 수 있는 장난질을 전혀 못하게 된다는 뜻인데....

가능성 여부만 타진하기 위해 데모 프로젝트 하나 만드는데 이런 델파이 라이브러리는 정말 대단한 것 같습니다.

지식이 짧아 아직 다른 델파이 FFMpeg 라이브러리로 영상 출력을 VLC 수준의 디코딩도 못해봤고 GPU 디코딩 테스트도 못해봤지만 요즘 영상관련 프로젝트 개발자들도 아주 편하게 안되면 VLC 라이브러리! 라고 조언을 하는지라;;

VLC에서 RTSP 영상을 열었을때 CPU 점유율 0.5%라는 숫자만 쳐다보면서 침만 꿀꺽 삼키고 있습니다;;

그냥 간단히 VLC는 0.5%이고 곰플레이어는 6%이고 델파이에서 FFMpeg 라이브러리를 사용하면 10%가 넘을까요?라고 질문하면 되는데 너무 성의 없을거 같아 경험담을 적다 보니 길어졌네요.

vlc는 사람이 만든거 맞나 하는 재미난 생각도 한번 해봤습니다^^

번호 제목 글쓴이 날짜 조회 수
공지 [프로그래밍 강의] 2021.6~2021.12 관리자 2015.01.22 15764
공지 유용한 관련 사이트 관리자2 2014.03.20 54578
공지 본 게시판은 개발자 여러분들의 질문과 답변을 공유하는 공간입니다. 관리자 2012.01.10 97981
2919 [시작하는 사람들을 위한 델파이 프로그래밍] 모듈 10 - Exercise 1 [1] 관리자 2016.05.10 151
2918 [시작하는 사람들을 위한 델파이 프로그래밍] 모듈 9 - Exercise 3 [1] 관리자 2016.05.02 152
2917 [시작하는 사람들을 위한 델파이 프로그래밍] 모듈 9 - Exercise 2 [1] file 관리자 2016.05.02 147
2916 [시작하는 사람들을 위한 델파이 프로그래밍] 모듈 9 - Exercise 1 [1] file 관리자 2016.05.02 167
2915 [시작하는 사람들을 위한 델파이 프로그래밍] 모듈 23 - Exercise 1 관리자 2016.05.27 159
2914 [시작하는 사람들을 위한 델파이 프로그래밍] 모듈 14 - Exercise 2 관리자 2016.05.10 127
2913 [시작하는 사람들을 위한 델파이 프로그래밍] 모듈 7 - Exercise 4 [2] 관리자 2016.05.02 210
2912 TMediaPlayer.Open 중 Invalid floating point operation 에러 발생 [4] Jack 2020.06.29 689
2911 modal이 뒤로 숨는현상 cleo0917 2020.07.03 161
2910 DataSnap 문의입니다. [3] 최민철 2014.10.08 1681
2909 Firemoney 로 Mac 및 리눅스 앱 제작시 [1] 100jk 2020.06.26 119
2908 출력이 보이지 않습니다. [1] yawayo 2020.06.29 88
2907 구글플레이에 게시시 32, 64비트 스마트폰 동시에 지원하는 방법은? [1] 화이부동 2020.07.02 69
2906 TMS그리드 설치시 에러 [1] 피스티스 2020.07.02 218
2905 설치및 구버젼 라인센스 [2] 희망나라 2020.07.02 81
2904 [시작하는 사람들을 위한 델파이 프로그래밍] 모듈 7 - Exercise 2 [1] 관리자 2016.05.02 237
2903 TMediaPlayer.Play 에서 floating point invalid operation 에러 Jack 2020.06.30 158
2902 [세미나: 데이터와 RAD] 공유메모리를 32비트에서 잘사용중인데 64비트에서 문제가 있습니다. [2] 험프리 2020.06.24 403
2901 (자문 자답) JSON 안의 특정 필드 값만 바꾸는 방법은 TJsonPair를 사용하면 간단합니다. (POST, PUT 방식으로 특정 필드만 교체할 때, 특히 유용) [2] WhiteC 2020.06.15 337
2900 코로나19 세미나 관련 DB오류 질문드립니다. file 유정 2020.06.25 116