[OpenCV] 마스크 연산 – setTo, copyTo

이번 글에서는 setTo와 copyTo 함수에 대해 알아보겠습니다. setTo 우선 setTo부터 알아보겠습니다. setTo 함수를 사용하기 위해서는 원본 영상과 마스크 영상의 크기가 같아야 합니다. 또한 보통 마스크 영상은 0 또는 255로 구성된 흑백 영상이 사용됩니다. 아래와 같이 가운데가 흰색으로 뚫려있는 이미지가 있을 때, setTo함수를 사용하면 흰색 부분에 노란색으로 설정합니다. 실행 결과는 아래와 같습니다. copyTo 그 다음으로 copyTo에 … Read more

[OpenCV] 트랙바 사용하기 – createTrackbar

 이번 글에서는 createTrackbar 함수를 사용하여 OpenCV에서 제공하는 트랙바를 만들어보겠습니다. 아래는 createTrackbar에 대한 설명입니다. createTrackbar의 6번째 인자는 콜백 함수가 입력 됩니다. 콜백 함수로 사용되는 TrackbarCallBack에 대한 정의는 아래와 같습니다. 아래는 샘플 코드입니다. 위 함수를 실행하면 이미지의 밝기값을 변경할 수 있는 트랙바가 생성됩니다.

[OpenCV] 키보드, 마우스 이벤트 처리

이번 글에서는 키보드와 마우스 이벤트를 처리하는 방법을 알아보겠습니다. 키보드 이벤트 처리는 이전 글에도 많이 나왔던 waitKey 함수를 사용하면 됩니다.  waitKey의 반환으로 입력된 키에 대한 아스키 코드 값을 반환합니다.아래 코드는 키 ‘a’, ‘b’를 입력 했을 때 각 키에 대해 출력을 하는 프로그램 입니다. 마우스 이벤트 처리는 setMouseCallback 함수를 사용하면 됩니다. 2번째 인자를 보면 cv::MouseCallback 타입으로 되어 있습니다. … Read more

[OpenCV] 텍스트 출력 – putText

이번 글에서는 영상에 텍스트를 출력하는 것을 알아보겠습니다. 텍스트를 출력하기 위해서는 putText 함수를 사용하면 됩니다. 샘플 코드는 아래와 같습니다. 실행 하면 아래와 같이 출력합니다.

[OpenCV] 도형 그리기 – rectangle, circle, ellipse, polylines

이번 글에서는 OpenCV에서 제공하는 도형 그리기에 대해 알아보겠습니다. 대표적으로 사각형, 원, 타원, 다각형을 그리는 방법을 알아보겠습니다. 사각형 사각형을 그리기 위해서는 rectangle 함수를 사용해야합니다. 원 원을 그리기 위해서는 circle 함수를 사용하면 됩니다. 타원 타원을 그리기 위해서 ellipse 함수를 사용하면 됩니다. 다각형 다각형은 polylines 함수를 사용하면 됩니다. 위 모든 함수에 대하여 인자 thickness에 -1을 입력하면 내부를 채웁니다. … Read more

[OpenCV] 직선 그리기 – line, arrowedLine

OpenCV에서는 영상 위에 직선을 그리는 lin), arrowedLine 함수를 제공합니다. line 먼저 line함수부터 알아보겠습니다. line 함수의 원형은 아래와 같습니다. 라인의 타입은 아래와 같이 열거형 상수가 있습니다. 500 X 500 사이즈 영상에 색상과 두께를 다르게 한 3가지 직선을 그려보았습니다. 위 코드를 실행하면 아래와 같이 표시됩니다. 아래 코드에서는 라인의 타입을 변경해보았습니다. 얼핏 보면 차이가 없어 보이지만 확대해서 볼 경우 각 타입별로 … Read more

[OpenCV] Point_, Size_ 클래스

OpenCV에서 Point_와 Size_ 클래스에 대해 알아보겠습니다. Point_ 우선 Point_클래스 부터 알아보겠습니다.Point_는 2차원 평면의 점의 좌표를 표현하는 클래스입니다. 해당 클래스는 템플릿 클래스이기 때문에 사용할 때 자료형을 명시해야합니다. 예를 들면 정수(int)형일 경우 Point_<int>로 명시하여 사용합니다. OpenCV에서는 아래와 같이 tyedef도 제공합니다. Point 클래스를 사용한 예제는 아래와 같습니다. 출력 결과는 아래와 같습니다. Size_ 다음으로 Size_ 클래스 입니다.Size_는 영상에서, 혹은 … Read more

[OpenCV] Scalar 클래스

OpenCV에서 Scalar 클래스에 대해 알아보겠습니다. Scalar 클래스는 이전에 설명한 것처럼 영상의 픽셀 값(=행렬의 원소값)을 표현하는 용도로 주로 사용 됩니다.Scalar 클래스는 Scalar_ 의 템플릿 재정의이고 Vec클래스를 상속받았습니다. Scalar은 아래와 같이 생성 가능합니다. Scalar 또한 <<연산이 가능합니다.

[OpenCV] Mat 클래스 – 4. 행렬 연산, 변환

마지막으로 Mat 클래스의 연산과 변환에 대해 알아보겠습니다. OpenCV에서는 Mat 클래스의 표현과 연산을 위한 기능도 제공하고있습니다.mat.hpp에 보면 아래 그림과 같이 +, -, *, / 뿐만 아니라 비교, 논리 연산도 제공합니다. MatExpr은 OpenCV의 Mat 클래스의 연산을 할 때 사용되는 클래스입니다.Mat뿐만 아니라 Scalar 클래스도 연산에 가능하며 int, float같은 자료형도 사용 가능합니다. 행렬의 곱은 아래 mul 함수로 사용 가능합니다. … Read more

[OpenCV] Mat 클래스 – 3. at, ptr, MatIterator_

이번 글에서는 Mat 클래스의 at, ptr, 반복자에 대해 알아보겠습니다. Mat::at 영상의 픽셀 값에 접근하기 위해서는 Mat 클래스의 at함수를 사용 합니다. Mat::at 함수의 사용 예제는 아래와 같습니다. 이미지 상으로 아래와 같습니다. Mat::ptr 원소 값에 접근하기 위해 아래 함수를 사용 할 수 있습니다. Mat::ptr 함수의 사용 예제는 아래와 같습니다. 이미지 상으로 아래와 같습니다. 만약 (1,2) 위치에 접근하고 … Read more