본문 바로가기

Computer Vision18

OpenCV 주요 기능 - 4. OpenCV 데이터 파일 입출력 1. FileStorage 클래스 Mat 클래스 객체뿐만 아니라 일반적인 C/C++ 자료형 데이터를 XML, JSON 등 파일 형식으로 저장하는 기능을 제공. OpenCV에서 사용하는 데이터의 파일 입출력 기능을 캡슐화하여 지원하는 클래스임. OpenCV 데이터를 저장하거나 읽어 오려면 먼저 FileStorage 객체를 생성해야 함. -> FileStorage fs; // 실제 사용할 파일 열기 virtual bool FileStorage::open(const String& filename, int flags, const String& encoding = String()); filename에는 데이터 파일 이름을 지정. flags는 파일 열기 모드를 결정. FileStorage::mode 열거형 상수를 .. 2020. 2. 14.
OpenCV 주요 기능 - 3. 이벤트 처리 1. 키보드 이벤트 처리 // 키보드 입력을 처리하는 함수 int waitKey(int delay = 0); delay : 키입력을 기다리는 시간. 지정하지 않거나 0 또는 음수일 경우 무한히 기다림. 반환값이 눌러진 키값(아스키 코드), 눌러진 게 없을 경우 -1이 반환됨. 특수키의 경우) // 특수키의 입력을 처리하는 함수 int waitKeyEx(int delay = 0); 2. 마우스 이벤트 처리 openCV에서 마우스 이벤트를 처리하려면 먼저 마우스 콜백 함수를 등록하고, 이후 마우스 콜백 함수에 마우스 이벤트를 처리하는 코드를 추가해야 함. // 특정 창에 마우스 콜백 함수를 등록할 때 사용하는 함수 void setMouseCallback(const String& winname, MouseCa.. 2020. 2. 13.
OpenCV 주요 기능 - 2. 다양한 그리기 함수 1. 직선 그리기 // 영상 위에 직선을 그리는 함수 void line(InputOutputArray img, Point pt1, Point, pt2, const Scalar& color, int thickness = 1, int lineType = LINE_8, int shift = 0); img 영상 위에 pt1부터 pt2까지의 직선을 그림. color로 선 색상을, thickness로 선 두께를, lineType으로 직선을 그리는 방식을 지정함. shift 인자에는 0보다 같거나 큰 정수를 지정. 지정한 크기만큼 직선 좌표 값을 (>>)을 수행한 후 직선 그리기 작업 수행. thickness, lineType, shift 인자는 생략 가능 LineTypes 열거형 상수 LineTypes 열거형 상수.. 2020. 2. 13.
OpenCV 주요 기능 - 1. 카메라와 동영상 파일 다루기(2) 2. 카메라 입력 처리하기 // 카메라 장치 열기 VideoCapture cap;// VideoCapture 기본 생성자를 이용하여 변수 선언 cap.open(0);// 컴퓨터에 연결되어 있는 기본 카메라 사용하기 위해 open() 함수 인자에 0을 지정 VideoCapture(0);// 위의 두 줄 코드를 한 줄로 줄일 수 있음. 카메라 장치가 열리도록 한 뒤, 정상적으로 열렸는지 isOpened() 멤버 함수를 이용하여 확인하는 것이 좋음. isOpened() 멤버 함수가 false를 반환하면 카메라 장치를 사용할 수 없는 상태일 경우 예외 처리 코드 추가 필요 예외 처리 코드 추가시... if (!cap.isOpened()) { cerr frame;// Mat 클래스 객체인 frame 변수에 하나의.. 2020. 2. 13.
OpenCV 주요 기능 - 1. 카메라와 동영상 파일 다루기(1) 1. VideoCapture 클래스 카메라 또는 동영상 파일로부터 정지 영상 프레임을 받아 올 수 있는 클래스 VideoCapture 클래스 멤버 변수는 모두 protected: 모드로 선언되어 있어 사용자가 직접 접근 불가능 // VideoCapture 클래스를 사용한 동영상 파일을 불러오는 기능 VideoCapture::VideoCapture(const String& filename, int apiPreference = CAP_ANY); bool VideoCapture::open(const String& filename, int apiPreference = CAP_ANY); filename 인자에 들어갈 수 있는 것 .avi, .mpg, .mp4 등의 확장자를 갖는 동영상 파일 이름 하나의 동영상 파.. 2020. 2. 13.
OpenCV 주요 클래스 - 4. InputArray와 OutputArray 클래스 1. InputArray 클래스 InputArray 클래스는 다양한 타입을 표현할 수 있는 인터페이스 클래스로 주로 OpenCV 함수의 입력 인자 자료형으로 사용됨. // Mat 객체뿐 아니라 vector 타입의 객체를 한번에 전달받을 수 있게 만드는 함수 Mat _InputArray::getMat(int idx=-1) const; Mat 객체 타입 형태로 변환해서 사용할 수 있게끔 하는 함수 idx에는 참조할 행 번호가 들어감. 음수일 경우 행렬 전체를 참조. 예시 ) void InputArrayOp() { uchar data1[] = { 1, 2, 3, 4, 5, 6 };// uchar 타입의 배열 data1 Mat mat1(2, 3, CV_8UC1, data1);// 2x3, uchar 타입의 da.. 2020. 2. 13.