IT정보공유/C#

C# OpenCV EmguCV 문제점

알지오™ 2019. 11. 4.

OpenCV Library를 C#에서 쉽고 편리하게 사용할수 있도록 만들어진
크로스 플랫폼 래퍼클래스인 EmguCV를 한동안 계속 테스트를 진행했었습니다.

개인적으로 테스트를 하다가 발견된 문제점들 몇가지를 기록해둘까 합니다.
제가 테스트를 진행했던 부분은 RTSP Protocol을 이용하여 
IP Camera를 다중접속 하여
CMS 소프트웨어처럼 IP Camera의 Live Video를 출력하고 싶었습니다.


결과적으로는 여러가지 문제점을 발견하고, 어찌됐든 현재까지는 문제가 발생하지 않고 있으나
추후에 EmguCV Version Update를 진행했을 때 문제가 발생할 수 도 있을 것 같긴합니다.

(FFMpeg 영상 디코딩 등의 문제로)

 

최신버전 EmguCV 4.x

멀티쓰레딩 관련 문제..
EmguCV의 문제인지 OpenCV 자체의 문제인지 모르겠으나, 
카메라 갯수 만큼 쓰레드를 생성하여 IP Camera를 연결하면 하나하나
쓰레드 동기화 된것 처럼 카메라가 연결되어 20개의 카메라를 연결하는데 오랜 시간이 필요함.

[IT정보공유/C#] - C# EmguCV 최신버전 v4.1.1.3497 멀티쓰레딩 버그 있는것 같네요.

 

C# EmguCV 최신버전 v4.1.1.3497 멀티쓰레딩 버그 있는것 같네요.

IP카메라 영상을 화면에 표출하기 위해 크로스플랫폼 라이브러리인 Emgu CV를 사용해 보고 있습니다. 다행이 일전에 일본인 개발자가 만들었다는 OpenCVSharp을 다뤄봐서 비교적 쉽게 EmguCV도 사용할 수 있었습니..

bigenergy.tistory.com

 

EmguCV 3.x 네트워크 미연결시 Hang (Freeze)

new Capture() 생성자 호출시, 네트워크 카드가 비활성화 또는 LAN선 자체가 
연결이 되어 있지 않은 경우, new Capture() 호출 후 무한루프처럼 먹통상태에 빠져버립니다.
이것 때문에 별도의 쓰레드를 생성하여 일정시간이 지나면
다시 new Capture()를 생성하여 카메라에 다시 연결하는 코드를 넣어놨으나
SystemAccessViolation 같은 에러가 발생하며
Try Catch에도 걸리지 않습니다. 
해결방법을 찾다찾다 찾지 못하고 LAN선이 빠진 상황같은 경우는 그냥 답이 없다 생각하고 포기.

 

EmguCV RTSP 연결시 이미지 가져오는 방법

이미지를 가져오는 방법에는 이벤트 핸들러인 ImageGrabbed 에 이벤트 핸들러를 지정하여
RTSP 영상을 가져오는 방법과 타이머등을 지정하여 내가 원할 때   
Grab() 함수를 호출하여 가져오는 방법 등이 있는데 
EmguCV의 내부 구동방식이 어떻게 되어 있는지 모르니, 그냥 제공해 주는 이벤트 핸들러
ImageGrabbed 를 이용하는 것이 낫다 싶은 느낌..

댓글

💲 추천 글