-
[OpenCV] 기본적인 Webcam 출력하기Tech/Development 2013. 9. 12. 10:42
OpenCV를 이용하면 V4L 등을 사용하지 않고도 아주 간단하게 Webcam 영상을 출력할 수 있다. OpenCV가 2.x 버젼대에 접어들면서 cv namespace를 통해 자료구조를 깔끔하게 정리하려고 노력 중인데 아직까지는 1.x 대에 사용하던 IplImage 등 여러가지 인터페이스가 혼재되어 사용되는 현실이긴 하다.
OpenCV 2.x 방식으로 Webcam을 출력하는 예제를 간단히 작성해보면 아래와 같다.
/* * @file ocv_cam_basic.cc * @brief OpenCV Webcam * @author http://thinkpiece.tistory.com */ #include "opencv/cv.h" #include "opencv/highgui.h" #include <iostream> int main(int argc, char *argv[]) { cv::VideoCapture capture(0); if( !capture.isOpened() ) { std::cerr << "Could not open camera" << std::endl; return 0; } cv::namedWindow("cam",1); while (true) { bool frame_valid = true; cv::Mat frame; try { capture >> frame; // get a new frame from webcam } catch(cv::Exception& e) { std::cerr << "Exception occurred. Ignoring frame... " << e.err << std::endl; frame_valid = false; } if (frame_valid) { try { /* * use 'frame' object for some vision tasks. * */ cv::imshow("cam", frame); } catch(cv::Exception& e) { std::cerr << "Exception occurred. Ignoring frame... " << e.err << std::endl; } } if (cv::waitKey(30) >= 0) break; } // VideoCapture automatically deallocate camera object return 0; }