OpenCV-개요
OpenCV는 실시간으로 개발할 수있는 크로스 플랫폼 라이브러리입니다. computer vision applications. 주로 얼굴 감지 및 물체 감지와 같은 기능을 포함하여 이미지 처리, 비디오 캡처 및 분석에 중점을 둡니다.
"컴퓨터 비전"이라는 용어를 정의하여 장을 시작하겠습니다.
컴퓨터 시각 인식
Computer Vision은 장면에있는 구조의 속성 측면에서 2D 이미지에서 3D 장면을 재구성, 중단 및 이해하는 방법을 설명하는 분야로 정의 할 수 있습니다. 컴퓨터 소프트웨어와 하드웨어를 사용하여 인간의 시각을 모델링하고 복제하는 것을 다룹니다.
Computer Vision은 다음 분야와 크게 겹칩니다.
Image Processing − 이미지 조작에 중점을 둡니다.
Pattern Recognition − 패턴 분류를위한 다양한 기법을 설명합니다.
Photogrammetry − 이미지에서 정확한 측정 값을 얻는 것과 관련이 있습니다.
컴퓨터 비전 대 이미지 처리
Image processing이미지 대 이미지 변환을 다룹니다. 이미지 처리의 입력과 출력은 모두 이미지입니다.
Computer vision이미지에서 물리적 객체에 대한 명시적이고 의미있는 설명을 구성하는 것입니다. 컴퓨터 비전의 출력은 3D 장면의 구조에 대한 설명 또는 해석입니다.
컴퓨터 비전의 응용
여기에서는 Computer Vision이 많이 사용되는 주요 도메인 몇 가지를 나열했습니다.
로봇 공학 응용
현지화-자동으로 로봇 위치 결정
Navigation
장애물 회피
조립 (페그 인 홀, 용접, 도장)
조작 (예 : PUMA 로봇 조작기)
HRI (Human Robot Interaction)-사람과 상호 작용하고 서비스를 제공하는 지능형 로봇
의학 응용
- 분류 및 검출 (예 : 병변 또는 세포 분류 및 종양 검출)
- 2D / 3D 분할
- 3D 인간 장기 재건 (MRI 또는 초음파)
- 비전 유도 로봇 수술
산업 자동화 애플리케이션
- 산업 검사 (결함 감지)
- Assembly
- 바코드 및 포장 라벨 판독
- 개체 정렬
- 문서 이해 (예 : OCR)
보안 애플리케이션
생체 인식 (홍채, 지문, 얼굴 인식)
Surveillance-특정 의심스러운 활동 또는 행동 감지
교통 신청
- 자율 주행 차
- 안전 (예 : 운전자 경계 모니터링)
OpenCV 라이브러리의 특징
OpenCV 라이브러리를 사용하면 다음을 수행 할 수 있습니다.
이미지 읽기 및 쓰기
비디오 캡처 및 저장
이미지 처리 (필터, 변환)
기능 감지 수행
동영상이나 이미지에서 얼굴, 눈, 자동차와 같은 특정 물체를 감지합니다.
비디오를 분석합니다. 즉, 동영상의 움직임을 추정하고 배경을 빼고 동영상 속의 물체를 추적합니다.
OpenCV는 원래 C ++로 개발되었습니다. 그 외에도 Python 및 Java 바인딩이 제공되었습니다. OpenCV는 Windows, Linux, OSx, FreeBSD, Net BSD, Open BSD 등과 같은 다양한 운영 체제에서 실행됩니다.
이 튜토리얼은 Java 바인딩을 사용하는 예제와 함께 OpenCV의 개념을 설명합니다.
OpenCV 라이브러리 모듈
다음은 OpenCV 라이브러리의 주요 라이브러리 모듈입니다.
핵심 기능
이 모듈은 OpenCV 애플리케이션을 빌드하는 데 사용되는 Scalar, Point, Range 등과 같은 기본 데이터 구조를 다룹니다. 이 외에도 다차원 배열도 포함합니다.Mat, 이미지를 저장하는 데 사용됩니다. OpenCV의 Java 라이브러리에서이 모듈은 이름이있는 패키지로 포함됩니다.org.opencv.core.
이미지 처리
이 모듈은 이미지 필터링, 기하학적 이미지 변환, 색 공간 변환, 히스토그램 등과 같은 다양한 이미지 처리 작업을 다룹니다. OpenCV의 Java 라이브러리에서이 모듈은 이름이있는 패키지로 포함됩니다. org.opencv.imgproc.
비디오
이 모듈은 모션 추정, 배경 빼기 및 객체 추적과 같은 비디오 분석 개념을 다룹니다. OpenCV의 Java 라이브러리에서이 모듈은 이름이있는 패키지로 포함됩니다.org.opencv.video.
비디오 I / O
이 모듈은 OpenCV 라이브러리를 사용하여 비디오 캡처 및 비디오 코덱을 설명합니다. OpenCV의 Java 라이브러리에서이 모듈은 이름이있는 패키지로 포함됩니다.org.opencv.videoio.
calib3d
이 모듈에는 기본 다중 뷰 지오메트리 알고리즘, 단일 및 스테레오 카메라 보정, 물체 포즈 추정, 스테레오 대응 및 3D 재구성 요소에 관한 알고리즘이 포함됩니다. OpenCV의 Java 라이브러리에서이 모듈은 이름이있는 패키지로 포함됩니다.org.opencv.calib3d.
기능 2d
이 모듈에는 기능 감지 및 설명의 개념이 포함되어 있습니다. OpenCV의 Java 라이브러리에서이 모듈은 이름이있는 패키지로 포함됩니다.org.opencv.features2d.
Objdetect
이 모듈에는 얼굴, 눈, 머그, 사람, 자동차 등과 같은 사전 정의 된 클래스의 개체 및 인스턴스 감지가 포함됩니다. OpenCV의 Java 라이브러리에서이 모듈은 이름이있는 패키지로 포함됩니다. org.opencv.objdetect.
하이 구이
이것은 간단한 UI 기능을 갖춘 사용하기 쉬운 인터페이스입니다. OpenCV의 Java 라이브러리에서이 모듈의 기능은 두 개의 서로 다른 패키지에 포함되어 있습니다.org.opencv.imgcodecs 과 org.opencv.videoio.
OpenCV의 간략한 역사
OpenCV는 처음에 CPU 집약적 인 애플리케이션을 조언하기위한 인텔 연구 이니셔티브였습니다. 1999 년에 공식적으로 출시되었습니다.
- 2006 년에 첫 번째 주요 버전 인 OpenCV 1.0이 출시되었습니다.
- 2009 년 10 월 두 번째 주요 버전 인 OpenCV 2가 출시되었습니다.
- 2012 년 8 월에 OpenCV는 비영리 단체 인 OpenCV.org에서 가져 왔습니다.