[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

[OpenCV] Mat 클래스 – 2. 초기화, 복사(얕은 복사, 깊은 복사), ROI

이번 글에서는 저번 글에 이어서 초기화와, 복사, Region of Interest(ROI)에 대해 알아보겠습니다. 초기화 초기화 알아보겠습니다.ones는 모든 원소를 1로 초기화하는 함수이고, eye는 대각선을 1로 저장합니다. 이미지로는 아래 그림을 참고하시면 됩니다. Mat을 생성할 때는 아래와 같이 배열을 이용하여 사용할 수 있습니다. 얕은 복사, 깊은 복사 Mat 클래스의 복사에 대해 알아보겠습니다. 복사에는 2가지 종류가 있습니다. 얕은 복사는 복사 … Read more

[OpenCV] Mat 클래스 – 1. 개념, 생성&초기화

Mat 클래스에 대해 알아보겠습니다. OpenCV에서 많이 사용되는 클래스 Mat은, 이미지를 행렬(Matrix)의 형태로 표현합니다. 2차원 행렬뿐만 아니라 고차원 행렬로 표현 가능하며, 여러 가지 자료형으로 표현 가능합니다.OpenCV에서는 Mat 클래스를 사용하여 이미지를 행렬의 형태로 저장합니다. 3차원에서 rows와 cols는 -1로 저장됩니다.3차원에서는 크기는 size 멤버 변수로 확인합니다. Mat 클래스는 unsigned char, signed char, unsigned short, signed short, int, float, double 자료형을 지원합니다.사용하는 자료형을 깊이(depth)라고 부릅니다.Mat 클래스를 생성할때 … Read more

[OpenCV] imread, imwrite, imshow, destroyWindow, destoryAllWindows

이번 글에서는 OpenCV에서 자수 사용하는 함수들에 대해 알아보겠습니다. 그냥 기본중의 기본 함수이므로 빠르게 설명드리겠습니다. imread imread 함수는 영상을 불러오는 함수 입니다.filename에 상대경로, 절대경로 모두 가능합니다.flags에는 영상을 불러올 때 옵션 입니다. 컬러는 IMREAD_COLOR, 그레이스케일은 IMREAD_GRAYSCALE 입니다. 반환 값으로 Mat 자료형을 사용하는데 저번 글에 설명드린 영상의 행렬 개념을 사용하는 클래스 입니다. empty empty함수는 imread로 읽어온 Mat이 잘 읽혀졌는지 확인하는 함수입니다. … Read more

[OpenCV] 영상의 구조와 표현 방법

이번글에서는 영상의 구조와 표현방법에 대해 알아보겠습니다. 영상은 2차원으로 구성된 픽셀(pixel)로 이루어져있습니다. 픽셀은 영상을 구성하는 최소 단위 이며, 밝기 또는 색상을 표현합니다. 보통 모니터의 크기는 1920 X 1080 크기를 가집니다. 이 말은 즉, 가로 1920, 세로 1080개의 픽셀이 있다는 의미입니다.그림으로 보면 아래와 같습니다. 영상은 2차원 평면 위에 많은 픽셀이 나열되어 있기 때문에, 수학적으로 표현할 때 아래와 그림과 같이 … Read more

[OpenCV] 윈도우 환경 변수 설정하기

이번 글에서는 저번에 말한대로, OpenCV 경로를 환경 변수에 등록하는 방법을 알아보겠습니다. 아래 그림과 같이 제어판 – 시스템 및 보안 – 시스템을 들어와서 고급 시스템 설정을 누르면 시스템 속성 창이 표시됩니다.이 창에서 고급 탭을 선택하신 뒤, 아래의 환경 변수 버튼을 눌러줍니다. 아래와 같이 환경 변수 창에서 사용자 변수에 새로 만들기 버튼을 클릭하여 입력합니다. 다운로드 받은 OpenCV 경로를 OPENCV_DIR, include 경로를 OPENCV_INC, 라이브러리 경로를 OPENCV_LIB, binary 경로를 … Read more