[유니티] OpenCV 연동시 간헐적으로 멈추는 현상(freeze)

프로그래밍/유니티2018. 4. 13. 10:18

안녕하세요. 개발자 드리머즈입니다.


유니티에서 OpenCV C++을 연동하여 테스트를 하고 있습니다. 유니티에서 비디오 영상을 OpenCV C++로 보내서 처리하는 작업을 하고 있는데 프로그램을 실행시키면 간헐적으로 유니티 프로그램이 멈추는 현상이 계속 발생했습니다. 프로그램을 실행하자마자 멈추는 경우도 있었지만 대부분은 실행 후 한.. 30초? 정도 지나면 멈추는 경우였습니다. 이 현상은 완전히 유니티 프로그램이 먹통이 되는 것이어서 작업 관리자를 실행시켜 유니티를 강제 종료 시켜야 했습니다. 그럼에도 아무런 에러도 뜨지 않아 답답했습니다.


인터넷에 검색을 해봐도 좋은 해답을 찾을 수 없었습니다. 문제가 되는 상황에서 작업 관리자를 열어서 보면 CPU 점유율이 상당히 올라가서 노트북의 팬이 열심히 돌아갔습니다. 유니티의 Update() 함수에서 OpenCV C++에 접근하여 얼굴 인식을 테스트하는데 이 부분이 상당한 부하가 걸리는 것 같았습니다. 그래서 매 frame마다 실행된다는 Update()함수에 너무 힘든 일을 시켜서 그런 것이 아닌지 조사해봤습니다.


1
2
3
4
5
6
    void Update()
    {
        //dll을 통해 OpenCV C++ 함수에 접근함
 
        System.Threading.Thread.Sleep(400);
    }
cs

Update()함수의 마지막에 Thread.Sleep을 주어서 강제로 0.4초씩 쉬게 만들었더니 프리징 현상이 사라졌습니다.

그런데 Update() 함수가 메인 쓰레드에서 실행되는지 뭐가 뚝뚝 끊어지는 느낌이 납니다.


계속 조사해보겠습니다..

작성자

Posted by 드리머즈

관련 글

댓글 영역