Computer Vision/OpenCV
-
[OpenCV 4] 7. 필터링Computer Vision/OpenCV 2020. 11. 13. 03:06
일상생활에서도 널리 사용되는 필터(filter)라는 말은 무언가를 걸러 내고 일부만을 통과시키는 장치를 의미합니다 한다. 영상 처리에서 필터링(filtering)이란 영상에서 원하는 정보만 통과시키고 원치 않는 정보는 걸러 내는 작업이다. 예를 들어 영상에서 지저분한 잡음(noise)을 걸러 내어 영상을 깔끔하게 만드는 필터가 있고, 또는 부드러운 느낌의 성분을 제거함으로써 영상을 좀 더 날카로운 느낌이 나도록 만들 수도 있다. 영상의 필터링은 보통 마스크(mask)라고 부르는 작은 크기의 행렬을 이용한다. 마스크는 필터링의 성격을 정의하는 행렬이며 커널(kernel), 윈도우(window)라고도 부르며, 경우에 따라서는 마스크 자체를 필터라고 부르기도 한다. 마스크 행렬의 원소는 보통 실수로 구성된다...
-
[OpenCV 4] 6. 영상의 산술 및 논리 연산Computer Vision/OpenCV 2020. 11. 13. 01:43
영상의 산술 연산 영상은 일종의 2차원 행렬이기 때문에 행렬의 산술 연산(arithmetic operation)을 그대로 적용할 수 있다. 즉, 두 개의 영상을 서로 더하거나 빼는 연산을 수행함으로써 새로운 결과 영상을 생성할 수 있다. 다만 영상을 서로 곱하거나 나누는 연산은 거의 사용하지 않는다. 덧셈, 뺄셈 연산은 그냥 말그대로 덧셈과 뺄셈 그 자체이다. void add(InputArray src1, InputArray src2, OutputArray dst, InputArray mask = noArray(), int dtype = -1); • src1 첫 번째 입력 행렬 또는 스칼라 • src2 두 번째 입력 행렬 또는 스칼라 • dst 입력 행렬과 같은 크기, 같은 채널 수를 갖는 출력 행렬. ..
-
[OpenCV 4] 5. 영상의 밝기와 명암비 조절Computer Vision/OpenCV 2020. 11. 13. 01:12
과거에 개발되었던 많은 영상 처리 알고리즘이 주로 그레이스케일 영상을 대상으로 개발되었기 때문에 대부분의 영상 처리 알고리즘은 컬러 영상이 아니라 그레이스케일 영상을 대상으로 한다. 간단히 그레이스케일 영상을 불러오는 방법은 다음과 같다. Mat img1 = imread(“lenna.bmp”, IMREAD_GRAYSCALE); 만약 새로운 그레이스케일 영상을 다룰 때는 생성을 해줘야 하는데 다음과 같다. Mat img2(480, 640, CV_8UC1, Scalar(0)); CV_8UC1 은 unsigned char 8bit 해서 0~255까지를 의미한다. 컬러 -> 흑백은 다음과 같은 코드를 사용한다. Mat img3 = imread(“lenna.bmp”, IMREAD_COLOR); Mat img4; ..
-
[OpenCV 4] 4. OpenCV 주요 기능Computer Vision/OpenCV 2020. 11. 12. 17:17
OpenCV에서는 카메라 또는 동영상 파일로부터 정지 영상 프레임을 받아 올 때 VideoCapture 클래스를 이용한다. VideoCapture 클래스의 정의와 다양한 멤버 함수 사용법에 대해 알아보고, 실제로 카메라와 동영상 파일을 재생하는 소스 코드 작성 방법에 대해 알아보자. VideoCapture 클래스 동영상이란 일련의 정지 영상을 압축하여 파일로 저장한 형태이다. 이때 동영상에 저장되어 있는 일련의 정지 영상을 프레임(frame)이라고 한다. 그러므로 동영상을 처리하는 작업은 동영상에서 프레임을 추출한 후, 각각의 프레임에 영상 처리 기법을 적용하는 형태로 이루어진다. void camera_in() { VideoCapture cap(0); if (!cap.isOpened()) { cerr )..
-
[OpenCV 4] 3. 주요 클래스Computer Vision/OpenCV 2020. 10. 22. 17:11
Vec 클래스는 다양한 OpenCV 프로그래밍에서 유용하게 사용되고 있으며, 특히 Vec3b, Vec4i, Vec2f 등 이름으로 재정의되어 사용되고 있다. 또한 Vec 클래스의 특별한 형태인 Scalar 클래스는 Mat 클래스만큼 사용 빈도가 많다. 먼저 C++에서 나오는 템플릿이라는 개념을 간단하게 설명하자면 템플릿(Template) 이란? - 함수나 클래스를 개별적으로 다시 작성하지 않아도, 여러 자료 형으로 사용할 수 있도록 하게 만들어 놓은 틀 - 함수 템플릿(Function Template)와 클래스 템플릿(Class Template)로 나누어진다. 함수 템플릿(Function Template) - 함수를 만들어 낼때, 함수의 기능은 명확하지만, 자료형을 모호하게 두는것 int mul(int ..
-
[OpenCV 4] 3.Mat 클래스Computer Vision/OpenCV 2020. 10. 17. 02:31
OpenCV에서 가장 많이 사용하는 클래스는 행렬을 나타내는 Mat 클래스이다. Mat 클래스를 이용하여 행렬 또는 영상을 생성하는 기본적인 방법부터 행렬의 복사, 부분 행렬 추출, 행렬의 정보 참조 방법 등을 설명한다. 또한 Mat 클래스에 저장된 행렬의 원소 혹은 영상의 픽셀 값에 접근하는 방법과 일반적인 행렬 연산 방법도 예제 코드와 함께 설명한다. Mat 클래스 개요 Mat 클래스는 일반적인 2차원 행렬뿐만 아니라 고차원 행렬을 표현할 수 있으며, 한 개 이상의 채널(channel)을 가질 수 있다. Mat 클래스에는 정수, 실수, 복소수 등으로 구성된 행렬 또는 벡터(vector)를 저장할 수 있고, 그레이스케일 또는 컬러 영상을 저장할 수도 있다. 실제적으로는 2차원 영상 데이터를 저장하고 처..
-
[OpenCV 4] 3.기본자료형 클래스Computer Vision/OpenCV 2020. 10. 16. 23:48
OpenCV는 컴퓨터 비전 프로그래밍에서 자주 사용되는 다양한 자료형 클래스를 지원한다. 픽셀의 좌표를 표현하는 Point 클래스, 사각형 영역의 크기를 표현하는 Size 클래스 사각형의 위치와 크기 정보를 나타내는 Rect_ 클래스 회전된 사각형을 표현하는 RotatedRect 클래스, 범위를 표현하는 Range 클래스 문자열을 표현하는 String 클래스도 유용하게 사용되고 있다. Point_ 클래스 Point 클래스는 2차원 평면 위에 있는 점의 좌표를 표현하는 템플릿 클래스이다. Point 클래스는 2차원 좌표를 나타내는 x와 y라는 이름의 멤버 변수를 가지고 있다. template class Point 02 { 03 public: 04 Point(); 05 Point(_Tp _x, _Tp y);..
-
OpenCV 4.20 설치 (Visual Studio 2017)Computer Vision/OpenCV 2020. 10. 4. 02:32
시간이 되는대로 opencv를 다시 공부해보려고 한다. 먼저 새로운 환경이므로 opencv 를 설치하려고 한다. 버전은 opencv 4.20 이다. opencv.org/releases/ 나는 Windows 환경이므로 Window를 선택하고 다운을 받는다. 설치폴더는 C:\ 으로 설정했다. 다음은 환경변수 설정을 해보자. 제어판 -> 시스템 -> 고급 시스템 설정 -> 환경변수 -> User에 대한 사용자 변수에서 추가를 해준다. 변수 이름은 OPENCV_DIR 이고 변수 값은 build의 해당경로를 설정해준다. 시스템 변수 PATH 편집을 누르고 다음과 같이 C:\opencv\build\x64\vc15\bin 을 추가한다. cmd 창에서 opencv_version.exe 라는 명령어를 입력하면 해당 버젼..