프로그래밍206 [OpenCV] 에지 검출 References https://docs.opencv.org/ OpenCV 4로 배우는 컴퓨터 비전과 머신러닝 Contents 소벨 필터, 샤르 필터 캐니 에지 검출기 직선 검출, 원 검출 (허프 변환) 에지(edge) 검출 미분과 그래디언트 영상에서 에지(edge)는 한쪽 방향으로 픽셀 값이 급격하게 바뀌는 부분을 의미합니다. 즉, 어두운 영역에서 갑자기 밝아지거나 또는 반대로 밝은 영역에서 급격하게 어두워지는 부분을 에지라고 합니다. 일반적으로 객체와 배경의 경계, 또는 객체와 다른 객체의 경계에서 에지가 발생합니다. 따라서 영상에서 에지를 찾아내는 작업은 객체의 윤곽을 알아낼 수 있는 유용한 방법이며 다양한 비전 시스템에서 객체 판별을 위한 전처리로 사용됩니다. 기본적으로 에지를 찾아내려면 픽셀 .. 2022. 5. 8. [OpenCV] 어파인 변환 / 투시 변환 References https://docs.opencv.org/ OpenCV 4로 배우는 컴퓨터 비전과 머신러닝 Contents 어파인 변환 투시 변환 어파인 변환 영상의 기하하적 변환은 영상을 구성하는 픽셀의 배치 구조를 변경함으로써 전체 영상의 모양을 바꾸는 작업입니다. 이전 포스팅들에서 설명한 영상의 밝기, 명암비 조절, 필터링 등은 픽셀 위치는 고정한 상태에서 픽셀 값만 변경했지만, 기하학적 변환은 픽셀 값은 그대로 유지하면서 위치를 변경하는 작업입니다. 입력 영상에서 (x, y) 좌표의 픽셀을 결과 영상의 (x', y') 좌표로 변환하는 방법은 보통 아래의 고유 함수 형태로 나타낼 수 있습니다. \[\begin{cases} x' = f_1(x, y) \\ y' = f_2(x, y) \end{ca.. 2022. 5. 7. [OpenCV] 영상 필터링 References https://github.com/opencv/opencv https://docs.opencv.org/ OpenCV 4로 배우는 컴퓨터 비전과 머신러닝 Contents 필터링(filtering) 연산 엠보싱 필터링 블러링 (평균값 필터, 가우시안 필터) 샤프닝 (언샤프 필터) 노이즈 제거 필터링 필터링 연산 영상 처리에서 필터링(filtering)은 영상에서 원하는 정보만 통과시키고 원치 않는 정보는 걸러 내는 작업입니다. 예를 들면, 노이즈를 제거하여 영상을 깔끔하게 만드는 필터가 있고, 또는 부드러운 느낌의 성분을 제거하여 날카로운 느낌이 나도록 만들 수도 있습니다. 영상의 필터링은 보통 마스크(mask)라고 부르는 작은 크기의 행렬을 이용하는데, 마스크는 필터링의 성격을 정의하는.. 2022. 5. 6. [OpenCV] 영상 밝기/명암비, 히스토그램 References https://github.com/opencv/opencv https://docs.opencv.org/ OpenCV 4로 배우는 컴퓨터 비전과 머신러닝 Contents 영상의 밝기/명암비 조절 히스토그램 분석 영상의 밝기 조절 영상의 밝기 조절은 행렬의 덧셈과 뺄셈 연산을 이용하여 간단하게 구현할 수 있습니다. 이번에는 OpenCV에서 제공하는 영상 밝기 조절 기법과 사용자가 직접 영상의 픽셀 값을 참조하여 밝기를 조절하는 방법에 대해 살펴보겠습니다. Grayscale 영상 처리 이번 포스팅부터 본격적으로 다양한 영상 처리 알고리즘에 대해 살펴볼텐데, 지금은 컬러 영상이 아닌 그레이스케일 영상을 대상으로 합니다. 이는 과거에 개발되었던 많은 영상 처리 알고리즘이 주로 그레이스케일 영상.. 2022. 5. 5. [OpenCV] 이벤트 처리 References https://github.com/opencv/opencv https://docs.opencv.org/ OpenCV 4로 배우는 컴퓨터 비전과 머신러닝 Contents 키보드 이벤트 마우스 이벤트 트랙바 OpenCV는 영상 출력 창에서 발생하는 키보드 입력과 마우스 이벤트를 사용자에게 전달하는 인터페이스를 제공하며, 이를 이용하여 사용자 입력을 실시간으로 처리하는 영상 처리 프로그램을 만들 수 있습니다. 또한 트랙바 인터페이스를 사용하면 프로그램 실행 중 특정 범위의 값을 사용자가 선택하여 프로그램 동작을 제어할 수 있습니다. 키보드 이벤트 OpenCV에서 키 입력을 확인하기 위한 함수는 waitKey()입니다. int cv::waitKey(int delay = 0); 이 함수는 de.. 2022. 5. 4. [OpenCV] 직선, 도형, 문자 그리기 References https://github.com/opencv/opencv https://docs.opencv.org/ OpenCV 4로 배우는 컴퓨터 비전과 머신러닝 Contents 직선 그리기 도형 그리기 문자열 출력하기 이번 포스팅에서는 OpenCV에서 제공하는 다양한 그리기 함수에 대해 살펴보겠습니다. 직선 그리기 가장 먼저 살펴볼 그리기 함수는 영상 위에 직선을 그리는 line() 함수입니다. 이 함수의 원형은 다음과 같습니다. 그리고 전달되는 파라미터 정보는 다음과 같습니다. line() 함수는 img 영상 위에 pt1 좌표부터 pt2 좌표까지 직선을 그립니다. 이때 선 색상 또는 밝기는 color 인자를 통해 지정할 수 있습니다. 예를 들어, 3채널 컬러 영상에 빨간색 선을 그리려면 co.. 2022. 5. 4. [OpenCV] 카메라 & 동영상 파일 처리하기 References https://github.com/opencv/opencv https://docs.opencv.org/ OpenCV 4로 배우는 컴퓨터 비전과 머신러닝 Contents VideoCapture 클래스 (카메라 장치 또는 비디오 파일 사용하는 방법) 카메라 입력 처리하는 방법 동영상 파일 처리하는 방법 동영상 파일 저장하기 (VideoWriter 클래스) 이번 포스팅에서는 컴퓨터에 연결되어 있는 카메라를 다루는 방법과 동영상 파일의 입출력 방법에 대해 살펴보도록 하겠습니다. VideoCapture 클래스 OpenCV에서는 VideoCapture라는 하나의 클래스를 이용하여 카메라 또는 동영상 파일로부터 영상의 프레임을 받아올 수 있습니다. 간략하게 나타낸 VideoCapture 클래스 정.. 2022. 5. 3. [OpenCV] Vec, Scalar, InputArray/OutputArray References https://github.com/opencv/opencv https://docs.opencv.org/ OpenCV 4로 배우는 컴퓨터 비전과 머신러닝 Contents Vec 클래스 Scalar 클래스 InputArray와 OutputArray 클래스 [OpenCV] Mat 클래스 지난 포스팅에 이어서 OpenCV에서 자주 사용되는 몇 가지 클래스들에 대해서 살펴보도록 하겠습니다. Vec 클래스 하나의 행이나 하나의 열로만 구성된 행렬을 행 벡터/열 벡터라고 부릅니다. 그리고, 행 벡터/열 벡터를 합쳐서 벡터 또는 벡터 행렬이라고 부릅니다. 즉, 벡터는 같은 자료형을 가진 원소 몇 개로 구성된 데이터 형식이라고 볼 수 있습니다. OpenCV에서는 이러한 벡터 데이터를 표현할 수 있는 .. 2022. 5. 3. [OpenCV] Mat 클래스 References https://github.com/opencv/opencv https://docs.opencv.org/ OpenCV 4로 배우는 컴퓨터 비전과 머신러닝 Contents Mat 생성 및 초기화 Mat 복사 부분 행렬 추출 행렬 원소 값 참조 행렬 정보 참조 행렬 연산 행렬 크기 및 타입 변환 OpenCV에서 가장 많이 사용하는 클래스 중 하나가 행렬을 표현하는 Mat 클래스입니다. 이번 포스팅에서는 Mat 클래스를 이용하여 행렬을 생성하는 기본적인 방법과 행렬의 복사 등에 관련된 내용들에 대해 살펴보겠습니다. 또한 Mat 클래스에 저장된 행렬의 원소(또는 이미지 픽셀값)에 접근하는 방법과 일반적인 행렬 연산 방법도 살펴보겠습니다. Mat 클래스 기본 Mat 클래스는 일반적인 2차원 행렬.. 2022. 5. 2. [OpenCV] 기본 자료형 클래스 References https://github.com/opencv/opencv https://docs.opencv.org/ OpenCV 4로 배우는 컴퓨터 비전과 머신러닝 Contents Point_, Size_ Rect_, RotateRect Range String OpenCV에서는 컴퓨터 비전 프로그래밍에서 자주 사용되는 다양한 클래스 타입을 지원합니다. 이번 포스팅에서는 유용하게 사용되는 OpenCV 기본 클래스를 살펴보겠습니다. Point_ 가장 먼저 살펴볼 클래스는 Point_ 클래스입니다. 이 클래는 2차원 평면 위에 있는 점의 좌표를 표현하는 템플릿 클래스입니다. 클래스 내에는 2차원 좌표를 나타내는 x와 y라는 이름의 멤버 변수가 있으며, 클래스 정의는 다음과 같습니다. (types.hpp.. 2022. 5. 1. 이전 1 ··· 3 4 5 6 7 8 9 ··· 21 다음