opencvopencv 시작하기

비고

이 섹션에서는 opencv가 무엇인지, 그리고 개발자가 왜 그것을 사용하고 싶어하는지에 대한 개요를 제공합니다.

또한 opencv 내의 큰 주제를 언급하고 관련 주제에 링크해야합니다. opencv의 문서는 새로운 문서이기 때문에 관련 주제의 초기 버전을 만들어야 할 수도 있습니다.

버전

OpenCV 3

번역 출시일
3.2 2016-12-23
3.1 2015-12-18
3.0 2015-06-03
3.0 RC1 2015-04-23
3.0 베타 2014-11-07
3.0 알파 2014-08-21

OpenCV 2

번역 출시일
2.4.13 2016-05-19
2.4.12 2015-07-30
2.4.11 2015-02-25
2.4.10 2014-10-01
2.4.9 2014-04-14
2.3.1 2011 년 8 월 17 일
2.3.0 2011 년 7 월 4 일
2.2.0 2010-12-05
2.1.0 2010-04-06
2.0.0 2009-10-01
1.0.0 2006-10-19

OpenCV로 이미지로드 및 표시

이 예제에서는 디스크에서 컬러 이미지를로드하고 OpenCV의 내장 함수를 사용하여 컬러 이미지를 표시하는 방법을 보여줍니다. C / C ++, Python 또는 Java 바인딩을 사용하여이를 수행 할 수 있습니다.

C ++에서 :

#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>

#include <iostream>

using namespace cv;

int main(int argc, char** argv) {
    // We'll start by loading an image from the drive
    Mat image = imread("image.jpg", CV_LOAD_IMAGE_COLOR);

    // We check that our image has been correctly loaded
    if(image.empty()) {
        std::cout << "Error: the image has been incorrectly loaded." << std::endl;
        return 0;
    }

    // Then we create a window to display our image
    namedWindow("My first OpenCV window");

    // Finally, we display our image and ask the program to wait for a key to be pressed
    imshow("My first OpenCV window", image);
    waitKey(0);

    return 0;
}

파이썬에서 :

import sys
import cv2

# We load the image from disk
img = cv2.imread("image.jpg", cv2.CV_LOAD_IMAGE_COLOR)

# We check that our image has been correctly loaded
if img.size == 0
    sys.exit("Error: the image has not been correctly loaded.")

# We create a window to display our image
cv2.namedwindow("My first OpenCV window")

# We display our image and ask the program to wait until a key is pressed
cv2.imshow("My first OpenCV window", img)
cv2.waitKey(0)

# We close the window
cv2.destroyAllWindows()

Java의 경우 :

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.CvType;
import org.opencv.highgui.Highgui;
public class Sample{
public static void main (String[] args) {

    //Load native opencv library
    System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

    //Read image from file first param:file location ,second param:color space
    Mat img = imread("image.jpg",CV_LOAD_IMAGE_COLOR);

    //If the image is successfully read.
    if (img.size() == 0) {
        System.exit(1);
    }
}

HighGui에는 opencv java에 namedwindows 또는 imshow가 없습니다. 이미지를 표시하려면 스윙이나 swt를 사용하십시오.

소스에서 OpenCV 빌드 및 설치

이것은 소스에서 데비안 기반의 리눅스 시스템에 OpenCV 3를 설치하는 단계별 가이드입니다. 단계는 다른 배포판에 대해 동일하게 유지되어야합니다. 패키지를 설치할 때 관련 패키지 관리자 명령을 바꿉니다.

참고 : 시간을 낭비하거나 터미널을 싫어한다고 생각하지 않는다면 Synaptic 패키지 관리자 GUI에서 OpenCV를 설치할 가능성이 높습니다. 그러나 이러한 라이브러리는 오래된 버전입니다.

빌드 준비

터미널에서 다음 명령을 실행하여 필수 패키지를 설치하십시오.

sudo apt-get update
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config \
                     libavcodec-dev libavformat-dev libswscale-dev

다음 패키지는 선택 사항입니다.

sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev \
                     libpng-devlibtiff-dev libjasper-dev libdc1394-22-dev

다음 명령을 실행하여 OpenCV 소스 코드를 얻고 빌드를 준비하십시오.

mkdir ~/src
cd ~/src
git clone https://github.com/opencv/opencv.git
cd opencv
mkdir build && cd build

빌드 및 설치

우리는 빌드에 예제를 포함 시키지만, 자유롭게 떠날 수 있습니다. 또한 다른 플래그를 설정하고 적절하게 빌드를 사용자 정의 할 수 있습니다.

cmake -D CMAKE_BUILD_TYPE=RELEASE \
      -D CMAKE_INSTALL_PREFIX=/usr/local \
      -D INSTALL_PYTHON_EXAMPLES=ON \
      -D INSTALL_C_EXAMPLES=ON ..

CMake가 오류나 누락 된 라이브러리를보고하지 않으면 빌드를 계속하십시오.

make -j$(nproc)

오류가 발생하지 않으면 OpenCV를 시스템에 설치하는 작업을 계속할 수 있습니다.

sudo make install

이제는 OpenCV를 사용할 수 있어야합니다. 다음 줄을 사용하여 OpenCV가 설치된 위치와 설치된 라이브러리를 알 수 있습니다.

pkg-config --cflags opencv  # get the include path (-I)
pkg-config --libs opencv    # get the libraries path (-L) and the libraries (-l)

테스트 설치

먼저 C ++ 예제를 빌드합니다.

cd ~/src/opencv/samples
cmake .
make

오류가 생성되지 않은 경우 샘플을 실행하십시오.

./cpp/cpp-example-edge

샘플이 실행되면 C ++ 라이브러리가 올바르게 설치됩니다.

다음으로 Python 바인딩을 테스트합니다.

python
>> import cv2
>> print cv2.__version__

이 명령이 OpenCV를 가져 와서 불평하지 않고 올바른 버전을 인쇄하면 Python 바인딩이 제대로 설치됩니다.

Congrats, 방금 OpenCV를 만들고 설치했습니다. 즐거운 프로그래밍!

Mac의 경우 Mac OS X 에서 OpenCV 설치를 참조하십시오.

Java의 Hello world 예제

Java에서 파일 시스템에서 읽은 OpenCv 이미지

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
 
public class Giris {    
    public static void main(String[] args) {
        //Load native library
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        //image container object
        Mat imageArray;
        //Read image from file system
        imageArray=Imgcodecs.imread("C:\\Users\\mesutpiskin\\sample.jpg");
        //Get image with & height
        System.out.println(imageArray.rows());
        System.out.println(imageArray.cols());
    }
}

웹캠에서 이미지 가져 오기

Java, C / C ++ 및 Python으로 OpenCV의 VideoCapture 클래스를 사용하여 웹캠에서 가져온 라이브 비디오 피드를 표시합니다.

자바

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.videoio.VideoCapture;
 
public class Camera {
    public static void main(String[] args) {
        // Load Native Library
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        // image container object
        Mat imageArray = new Mat();
        // Video device acces
        VideoCapture videoDevice = new VideoCapture();
        // 0:Start default video device 1,2 etc video device id
        videoDevice.open(0);
        // is contected
        if (videoDevice.isOpened()) {
        // Get frame from camera
            videoDevice.read(imageArray);
            // image array
            System.out.println(imageArray.toString());
            // Release video device
            videoDevice.release();
        } else {
            System.out.println("Error.");
        }
    }
}

C ++

#include "opencv2/opencv.hpp"
#include "iostream"

int main(int, char**) {
    // open the first webcam plugged in the computer
    cv::VideoCapture camera(0);
    if (!camera.isOpened()) {
        std::cerr << "ERROR: Could not open camera" << std::endl;
        return 1;
    }

    // create a window to display the images from the webcam
    cv::namedWindow("Webcam", CV_WINDOW_AUTOSIZE);

    // this will contain the image from the webcam
    cv::Mat frame;
        
    // capture the next frame from the webcam
    camera >> frame;
    
    // display the frame until you press a key
    while (1) {
        // show the image on the window
        cv::imshow("Webcam", frame);
        // wait (10ms) for a key to be pressed
        if (cv::waitKey(10) >= 0)
            break;
    }
    return 0;
}

파이썬

import numpy as np
import cv2

# Video source - can be camera index number given by 'ls /dev/video*
# or can be a video file, e.g. '~/Video.avi'
cap = cv2.VideoCapture(0)

while(True):
    # Capture frame-by-frame
    ret, frame = cap.read()

    # Our operations on the frame come here
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    # Display the resulting frame
    cv2.imshow('frame',gray)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()

Windows에서 OpenCV 3.1 시작하기

Windows에 OpenCV 3.1.0을 설치하고 시작합니다. Windows에 OpenCV를 설치하는 방법에는 두 가지가 있습니다. 하나는 설치 프로그램을 다운로드하여 실행하는 것입니다. 다른 것은 소스에서 빌드하는 것입니다.

이것이 OpenCV를 설치하고 시작하는 가장 쉬운 방법입니다. OpenCV는 Windows에 미리 빌드 바이너리를 설치 합니다 . 다운로드가 끝나면 압축을 풀고 선택한 경로에 설치하십시오.

ProTip : OpenCV 경로에 공백이 없어야합니다. C : \ 또는 D : \ root 디렉토리에 설치하는 것이 좋습니다.

위의 방법의 문제점은 opencv_contrib 모듈을 사용할 수 없다는 것입니다. 또한 모든 타사 도구 및 라이브러리와 함께 제공되지 않습니다. 따라서이 모든 것을 사용하려면 그냥 따라하십시오.

소스에서 OpenCV를 설치하기위한 최소 최소 사양에 대해 설명하겠습니다. 보다 고급 인 경우 여기를 참조 하십시오 .

  • CMake를 설치하십시오.
  • 공백이없는 디렉토리의 https://github.com/Itseez/opencv.git 에서 OpenCV 소스를 복제하십시오. "OpenCVdir"이라고 지칭합니다. 여기에 이미지 설명을 입력하십시오.
  • 이제 CMake GUI를 열고 소스 디렉토리 (OpenCVdir)를 소스 메뉴에 추가하고 빌드 메뉴에 디렉토리를 빌드하십시오. 팁 : 빌드 디렉토리가 없다면 opencv 폴더에 디렉토리를 만듭니다. 여기에 이미지 설명을 입력하십시오.
  • 구성을 클릭하고 Visual Studio 컴파일러 버전을 선택하십시오. 저는 Visual Studio 2013 Professional 32 비트를 가지고 있었기 때문에 Visual Studio 12 컴파일러를 선택했습니다. 여기에 이미지 설명을 입력하십시오.

팁 : 여기에서 Visual Studio 2013 Professional을 다운로드 할 수 있습니다. 로그인 후 30 일 평가판 + 90 일 연장 트레일이 제공됩니다.

  • Finish를 누르면 CMake는 모든 패키지를 자동으로로드합니다. 패키지를 추가하거나 제거 할 수 있습니다. 구성을 다시 누릅니다.
  • 추가 opencv_contrib 모듈로 빌드하려면 여기 에서 다운로드해야 합니다 . 그런 다음 압축을 풀고 아래와 같이 opencv_contrib / modules 디렉토리를 CMake에 추가하십시오. 여기에 이미지 설명을 입력하십시오.
  • 이제 다시 Configure (구성)를 누른 다음 Generate (생성)를 누릅니다.
  • CMake를 닫습니다. your_opencv \ build 폴더로 이동하여 'OpenCV.sln'파일을 엽니 다. - Visual Studio가 열립니다. 이제, 두 디버그에서 모두 실행하십시오. 여기에 이미지 설명을 입력하십시오. 모드 및 릴리스 여기에 이미지 설명을 입력하십시오. 방법.
  • 이제 Visual Studio의 오른쪽 위에있는 솔루션 탐색기에서 INSTALL project를 선택하고 빌드하십시오. 여기에 이미지 설명을 입력하십시오.

만세!! OpenCV를 즐기십시오.

환경 변수의 PATH 변수에 OpenCV include 디렉토리 추가 :

  • 시스템 속성으로 이동하여 고급 시스템 설정을 클릭하십시오. 여기에 이미지 설명을 입력하십시오.

  • 이제 환경 변수 >> 경로 >> 편집을 클릭하십시오. 여기에 이미지 설명을 입력하십시오.

  • 여기에서 OpenCVdir / build / install / x86 / vc ** / bin에있는 bin 폴더를이 변수에 추가합니다. 기존 Path 값을 대체하지 않도록주의하십시오.

  • 이 후에는 환경 변수가 변경되기 위해 시스템을 다시 시작해야하며 이제 준비가 완료되었습니다.

OPENCV 란 무엇입니까?

OpenCV (오픈 소스 컴퓨터 비전 라이브러리)는 오픈 소스 컴퓨터 비전 및 기계 학습 소프트웨어 라이브러리입니다. 컴퓨터 학습, 컴퓨터 비전, 알고리즘, 수학 연산, 비디오 캡처, 이미지 처리 등과 같은 다양한 목적을 위해 제작되었습니다. 수년 동안 연구원과 개발자들 사이에서 다른 플랫폼 (Windows, Linux , android, ios). 또한 다양한 프로그래밍 언어로 래퍼가 있습니다. 라이센스 계약에 따라 기업은 코드를 활용하고 수정할 수있는 권한을 갖습니다.

이 라이브러리에는 성능과 속도면에서 뛰어난 정확도를 가진 2500 개 이상의 최적화 된 알고리즘이 포함되어 있습니다. 이 알고리즘은 얼굴을 감지 및 인식하고, 물체를 식별하고, 비디오에서의 인간 행동을 추적하고, 움직이는 물체를 추적하고, 물체의 3D 모델을 추출하고, 스테레오 카메라에서 3D 점 구름을 생성하고, 이미지를 결합하여 고해상도를 생성하는 데 사용할 수 있습니다. 이미지 데이터베이스에서 유사한 이미지를 찾고, 플래시를 사용하여 촬영 한 이미지에서 적목 현상을 제거하고, 눈동자를 따라 가며, 풍경을 인식하고, 증강 현실로 오버레이하는 마커를 설정합니다. OpenCV는 훌륭한 사람들과 커뮤니티가 사용자로 참여합니다 , 개발자 및 연구원의 수는 47,000 명 이상이며 다운로드 수는 7 백만을 초과합니다. 도서관은 전문 회사, 연구 그룹 및 기타 그룹에 광범위하게 있습니다.

구글, 야후, 마이크로 소프트, 인텔, IBM, 소니, 혼다, 도요타와 같이 도서관을 고용하고있는 많은 회사들은 Applied Minds, VideoSurf, Zeitera와 같은 많은 벤처 기업이 OpenCV를 광범위하게 사용하고 있습니다. OpenCV는 스트리트 뷰 이미지를 결합하여 이스라엘의 감시 비디오 침입을 탐지하고 중국의 광산 장비를 모니터링하며 로봇이 Willow Garage에서 개체를 탐색하고 데리러내는 것을 돕고 유럽에서 수영장 익사 사고를 감지하고 상호 작용 방식의 예술을 실행하며 스페인과 뉴욕에서 터키의 잔해물에 대한 활주로를 조사해 전 세계 공장의 제품에 대한 라벨이 일본의 빠른 얼굴 탐지를 조사했다. C ++, C, Python, Java 및 MATLAB 인터페이스가 있으며 Windows, Linux, Android 및 Mac OS를 지원합니다. OpenCV는 대부분 실시간 비전 응용 프로그램을 선호하며 가능한 경우 MMX 및 SSE 지침을 활용합니다. 모든 기능을 갖춘 CUDA 및 OpenCL 인터페이스가 현재 활발히 개발되고 있습니다. 500 가지가 넘는 알고리즘과 그 알고리즘을 구성하거나 지원하는 함수의 약 10 배에 달합니다. OpenCV는 기본적으로 C ++로 작성되었으며 STL 컨테이너와 원활하게 작동하는 템플릿 기반 인터페이스를 가지고 있습니다.

공식 웹 사이트 에서 수집 한 정보