AI Research Topic/Object Tracking

[Object Tracking] 1. OpenCV 비디오 입력 및 CANNY 에지 검출

꾸준희 2016. 9. 5. 19:53
728x90
반응형


1. OpenCV 비디오 입력 및 CANNY 에지 검출


OpenCV에서는 HIGHGUI 라이브러리의 VideoCapture 클래스를 사용하여 비디오 파일 입력 및 카메라로부터 입력을 받을 수 있다. 또한, VideoWriter 클래스를 사용하여 비디오 파일을 생성할 수도 있다. 


공부할 때는 카메라 한대를 가지고 공부를 하며, 향후 연구과제에서 카메라 두 대를 가지고 객체를 추적하는 방법을 연구할 것이다. 


VideoCapture(int device 또는 const string& filename);

VideoCapture라는 클래스의 생성자로 객체를 생성하고, 카메라가 한 대일 경우에는 0, 특정 영상 파일을 오픈할 때는 파일 이름을 확장자와 함께 적어주면 된다.


그 밖에도, open(), isOpened(), release(), grab(), retrieve(), read(), get() 등의 함수가 클래스 안에 포함되어있다.


그 동안 스틸이미지(=고정적이고 움직이지 않는 사진 등의 이미지)를 가지고 공부하는 것을 시작으로 앞으로는 움직이는 영상 이미지에 대해 공부해보고자 한다. 


카메라에 따라, 첫 프레임을 획득하기 전까지 준비시간이 필요하기 때문에 waitKey() 함수로 대기해 준 다음 카메라 영상을 화면에 띄우도록 한다. (namedWindow() ~ ) 또한, 스틸이미지가 아니라 움직이는 영상이기 때문에, 이 영상은 스틸이미지의 연속이므로 for(;;) 문처럼 반복문으로 연속적인 이미지를 얻어 온 후, 영상에 구하고자 하는 처리 과정을 적용해야한다. 


먼저, CANNY 에지 함수를 적용하려면 받아온 영상을 cvtColor() 함수를 통해 영상 frame을 그레이스케일 영상 (grayImage)로 변환하고, Canny 함수로 그레이스케일 영상에서 에지를 검출하여 edgeImage에 저장하는 과정을 거치게 된다.


먼저, 기초부터 천천히 배우자는 마음으로, 웹캠으로 영상을 받아와서 화면에 띄운 후, 캐니 에지를 이용하여 외곽선을 추출해보았다. 다음은 입력받은 비디오 영상에서 움직임을 검출해볼 예정, 그리고 이번주 안으로 워터쉐드와 같은 영상분할 방법을 이용하여 영상을 분할해볼 예정이다. 영상을 분할하고 나면, 추석즈음에 분할한 영상을 가지고 뎁스 영상에 대해서도 적용해 볼 예정이다.



        




728x90
반응형