우선 해당 샘플은 내가 만들었고, 대부분 레퍼런스하고 샘플코드 보고 했다. 퍼가는건 대환영.
CamTest
파일이 좀 크다. 혹시나 해서 빌드된 OpenCV dll, lib, include 파일들을 포함시켜놨다.
프로젝트 속성가서 lib 폴더 설정 및 include 참조폴더 정도면 변경해서 빌드하면 잘 될거다.
내가 OpenCV를 사용해보면서 생긴 의문점에 대해 적는다.
1.얼굴인식은 왜 속도가 느린가. 빠른 인식 모듈은 없나?
DVR에도 얼굴인식 하는 기능이 있는 제품들이 있는데, 요녀석들도 얼굴인식 기능을 켜면 프레임이 떨어진다. 샘플코드에 보면 얼굴인식하는 함수에 xml을 불러오게 되어 있다.
샘플코드에서는 두 개의 XML이 있다. 이 XML은 설치한 OpenCV 소스코드에 있다. 파일찾기를 통해 XML로 검색해보면 몇 개가 나온다.
샘플코드에서는 HAAR 방식을 쓰고있다. LBP방식을 써보니 인식률이 엉망이다. 대신 속도는 빠르다. 소스코드에 보면 얼굴인식 후 나오는 결과 값으로 faces 백터 변수가 있는데, 요걸 갖고 사각형을 그려보면 인식률이 얼마나 엉망인지 알 수 있다. 사람 얼굴도 인식하긴 하는데, 전혀 비슷하게 생기지도 않은 사물도 얼굴로 인식한다.
2. 샘플코드에서는 영상 저장을 XVID로 했다.
처음엔 DIVX로 하려했으나 유료라서, XVID로 했다. 많은 사람들이 알다시피 RAW포멧으로 저장하면 용량이 어마어마하기 때문에 무조건 코덱을 사용하여 영상을 저장해야 한다.
하지만 동영상 인코딩 프로그램을 사용해본 사람들은 알 것이다. CPU 사용량이 어마어마하게 늘어난다는 것을. 거의 100%에 육박.
물론 내가 개발용으로 사용하는 i5-2500은 높으면 cpu 사용량이 70~80정도까지 간다. 그래도 프레임드랍없이 녹화 잘된다. 물론 얼굴인식하면 프레임이 떨어진다. 문제는 이 프로그램을 만들어서 실제 사용할 PC가 3만원짜리 AMD 듀얼코어였다. 녹화하니까 프레임이 너무 떨어진다. 평균 7~8프레임 나온다.
게다가 CPU사용율은 100%다. 다른 작업을 할 수가 없다. 결국 솔루션에 녹화기능 집어넣는 것은 드랍했다.
3. 파일 저장시에도 시간이 걸린다.
녹화파일을 저장(cvWriteFrame)하는데도 시간이 걸린다. 그래서 저장은 별도 스레드에서 만들어서 하니 훨씬 나아졌다.
4. 프레임비교는 리사이징 후 한다.
모션인식은 이전 프레임과 현재 프레임의 차이를 갖고 한다. 입력된 영상의 크기가 크면 클 수록 비교하는데 시간이 오래걸린다. 또한 얼굴인식도 프레임이 크면 시간이 많이 걸린다. 그래서 구글링을 해보니 프레임을 리사이징할 필요가 있다고 한다. 이거 말고는 다른 방법이 없다고 한다. 샘플코드에서는 1/5로 줄인 프레임을 갖고 모션인식 및 얼굴인식을 한다.
물론 저장은 원본 프레임을 갖고 한다.
5. 샘플코드에는 CvvImage라는 클래스가 사용된다.
OpenCV를 쉽게 사용하기 위해 랩핑한 클래스인데 C에서 OpenCV를 이용하려면 대부분 이걸 사용하는 것으로 보인다.
6. 함수별로 필요한 dll이 다르다.
링크에 모든 lib을 추가해놓고, 빌드해서 실행해보면 dll이 없다고 하는 경우가 있다. 없는 dll 추가해주면서 실행하면 된다. lib,dll이름에 d가 붙은건 디버그용이다.
7. C용 OpenCV 함수들은 에러처리하기가 에메하다.
리턴값이 포인터인 경우에는 NULL인지 아닌지 처리하면 된다. 근데 OpenCV 레퍼런스 사이트에는 내용이 없다. 그리고 리턴값이 없는 함수들은 에러가 안나는 건지 궁금하다. C++용 OpenCV함수의 에러처리는 try catch를 이용해서 하라고 안내하고 있다.
8.샘플에 사용된 캠이 로지텍 C270인데, 720P 30프레임으로 영상을 입력받으려면 드라이버가 꼭 필요했다. 꼭 캠 드라이버를 설치하고 이용하자.
9. XVID 코덱을 설치한 후 샘플코드로 녹화를 해보면 이상한 창이 하나 뜬다. 인코딩 Input값을 보여주는 것 같은데, 숨기려면 '시작버튼->모든프로그램->XVID->Configure Encoder' 들어가서, 아래에 'Other Options' 버튼을 클릭하면 'Display encoding status'가 보일 것이다. 이 값에 체크가 되어있는데 체크를 풀면 창이 안뜬다.
10. XVID코덱 설치파일은 2015년 1월16일 기준 Xvid-1.3.3-20141019.exe 이다. 설치할 때 그냥 다음다음 눌러주면 된다.(https://www.xvid.org/download/)
이거 글쓰고나서 OpenCV는 앞으로 몇년간 안보겠지. OpenCV 이용할 일이 없을거 같다.
참조한 사이트들.
http://cinema4dr12.tistory.com/entry/OpenCV-MFC%EC%97%90%EC%84%9C-OpenCV-%EC%97%B0%EB%8F%99%ED%95%98%EA%B8%B0
http://singhgaganpreet.wordpress.com/tag/cvabsdiff-example/
http://webnautes.tistory.com/256
http://darkpgmr.tistory.com/102
댓글 없음:
댓글 쓰기