Szukaj…


Uwagi

Ta sekcja zawiera przegląd tego, czym jest opencv i dlaczego deweloper może chcieć z niego korzystać.

Powinien również wymieniać wszelkie duże tematy w opencv i zawierać linki do powiązanych tematów. Ponieważ Dokumentacja dla opencv jest nowa, może być konieczne utworzenie początkowych wersji tych pokrewnych tematów.

Wersje

OpenCV 3

Wersja Data wydania
3.2 23.12.2016
3.1 18.12.2015
3.0 2015-06-03
3.0 RC1 23.04.2015
3.0 beta 07.11.2014
3,0 alfa 21.08.2014

OpenCV 2

Wersja Data wydania
2.4.13 2016-05-19
2.4.12 2015-07-30
2.4.11 2015-02-25
2.4.10 01.10.2014
2.4.9 14.04.2014
2.3.1 17.08.2011
2.3.0 2011-07-04
2.2.0 2010-12-05
2.1.0 2010-04-06
2.0.0 01.10.2009
1.0.0 2006-10-19

Załaduj i wyświetl obraz za pomocą OpenCV

W tym przykładzie zobaczymy, jak załadować kolorowy obraz z dysku i wyświetlić go za pomocą wbudowanych funkcji OpenCV. W tym celu możemy użyć powiązań C / C ++, Python lub Java.

W 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;
}

W Pythonie:

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()

W Javie:

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 nie ma nazwanych okien ani imshow odpowiedników w Javie OpenCV. Użyj huśtawki lub swt, aby wyświetlić obraz.

Zbuduj i zainstaluj OpenCV ze źródła

Jest to przewodnik krok po kroku dotyczący instalowania OpenCV 3 w systemie Linux opartym na Debianie ze źródła. Kroki powinny pozostać takie same dla innych dystrybucji, wystarczy zastąpić odpowiednie polecenia menedżera pakietów podczas instalowania pakietów dla kompilacji.

Uwaga: Jeśli nie masz ochoty marnować czasu na budowanie lub nie lubisz terminala, najprawdopodobniej możesz zainstalować OpenCV z GUI menedżera pakietów Synaptic. Te biblioteki są jednak często nieaktualne.

Przygotuj się do kompilacji

Wydaj następujące polecenia w swoim terminalu, aby zainstalować wymagane pakiety:

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

Następujące pakiety są opcjonalne:

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

Wydaj następujące polecenie, aby uzyskać kod źródłowy OpenCV i przygotować kompilację:

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

Zbuduj i zainstaluj

Uwzględniamy przykłady w kompilacji, ale możesz je pominąć. Możesz także ustawić inne flagi i dostosować kompilację według własnego uznania.

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

Jeśli CMake nie zgłosił żadnych błędów ani brakujących bibliotek, kontynuuj kompilację.

make -j$(nproc)

Jeśli nie wystąpiły żadne błędy, możemy kontynuować instalację OpenCV w systemie:

sudo make install

Teraz OpenCV powinien być dostępny dla twojego systemu. Możesz użyć następujących wierszy, aby dowiedzieć się, gdzie zainstalowano OpenCV i jakie biblioteki zostały zainstalowane:

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

Instalacja testowa

Najpierw budujemy przykłady C ++:

cd ~/src/opencv/samples
cmake .
make

Jeśli nie wystąpiły błędy, uruchom dowolną próbkę, np

./cpp/cpp-example-edge

Jeśli próbka zostanie uruchomiona, biblioteki C ++ są poprawnie zainstalowane.

Następnie przetestuj powiązania Pythona:

python
>> import cv2
>> print cv2.__version__

Jeśli te polecenia zaimportują OpenCV i wydrukują poprawną wersję bez narzekania, to powiązania Pythona zostaną poprawnie zainstalowane.

Gratulacje, właśnie zbudowałeś i zainstalowałeś OpenCV. Miłego programowania!

W przypadku komputerów Mac zobacz tutaj Instalacja OpenCV w systemie Mac OS X

Przykład Witaj świecie w Javie

Obraz OpenCv odczytany z systemu plików w Javie

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());
    }
}

Uzyskaj obraz z kamery internetowej

Wyświetl kanał wideo na żywo pobrany z kamery internetowej za pomocą klasy VideoCapture OpenCV w Javie, C / C ++ i Pythonie.

Jawa

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;
}

Pyton

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()

Rozpoczęcie pracy z OpenCV 3.1 w systemie Windows

Instalujemy OpenCV 3.1.0 w systemie Windows i zaczynamy. Istnieją dwa sposoby instalacji OpenCV w systemie Windows. Jednym z nich jest pobranie instalatora i uruchomienie go. Innym jest budowanie ze źródła.

Jest to najprostszy sposób na zainstalowanie OpenCV i rozpoczęcie pracy. OpenCV daje Gotowy binaria zainstalować na Windows tutaj . Po zakończeniu pobierania wyodrębnij go i zainstaluj na wybranej ścieżce.

Porada: Upewnij się, że ścieżka OpenCV nie zawiera spacji. Lepiej jest po prostu zainstalować go w katalogu głównym C: \ lub D: \

Problem z powyższą metodą polega na tym, że nie można używać modułów opencv_contrib. Ponadto nie zawiera wszystkich narzędzi i bibliotek innych firm. Tak więc, jeśli chcesz korzystać z nich wszystkich, postępuj zgodnie z nimi.

Wyjaśnię co najmniej minimum, aby zainstalować OpenCV ze źródła. Bardziej zaawansowany, patrz tutaj .

  • Zainstaluj CMake .
  • Sklonuj źródło OpenCV z https://github.com/Itseez/opencv.git w katalogu, w którym nie ma spacji. Odwołajmy się do niego jako „OpenCVdir”. wprowadź opis zdjęcia tutaj
  • Teraz otwórz CMake GUI i dodaj katalog źródłowy (OpenCVdir) do menu Źródła i skompiluj katalog do menu kompilacji. Wskazówka: Jeśli nie ma katalogu kompilacji, utwórz go w folderze opencv. wprowadź opis zdjęcia tutaj
  • Kliknij Konfiguruj i wybierz wersję kompilatora Visual Studio. Miałem Visual Studio 2013 Professional 32-bit, więc wybrałem kompilator Visual Studio 12. wprowadź opis zdjęcia tutaj

Wskazówka: stąd możesz pobrać program Visual Studio 2013 Professional. Pochodzi z 30-dniową wersją próbną i 90-dniową rozszerzoną trasą po zalogowaniu.

  • Naciśnij Finish, a CMake automatycznie załaduje wszystkie paczki. Możesz dodawać lub usuwać pakiety. Naciśnij ponownie Konfiguruj.
  • Jeśli chcesz budować z dodatkowymi modułami opencv_contrib, musisz pobrać je stąd . Następnie wyodrębnij je i dodaj katalog opencv_contrib / modules do CMake, jak pokazano poniżej. wprowadź opis zdjęcia tutaj
  • Teraz ponownie naciśnij Konfiguruj, a następnie Generuj.
  • Zamknij CMake. Przejdź do folderu your_opencv \ build i otwórz plik o nazwie „OpenCV.sln”. - Otworzy Visual Studio. Teraz uruchom go w obu debugach wprowadź opis zdjęcia tutaj tryb i zwolnij wprowadź opis zdjęcia tutaj tryb.
  • Teraz w eksploratorze rozwiązań w prawym górnym rogu programu Visual Studio wybierz ZAINSTALUJ projekt i skompiluj go. wprowadź opis zdjęcia tutaj

Hurra!! Ciesz się swoim OpenCV.

Dodanie katalogu włączeń OpenCV do zmiennej PATH zmiennych środowiskowych:

  • Przejdź do Właściwości systemu i kliknij Zaawansowane ustawienia systemu. wprowadź opis zdjęcia tutaj

  • Teraz kliknij Zmienne środowiskowe >> Ścieżka >> Edytuj. wprowadź opis zdjęcia tutaj

  • Tutaj dodaj folder bin znajdujący się w twoim OpenCVdir / build / install / x86 / vc ** / bin do tej zmiennej. Uważaj, aby nie zastąpić istniejących wartości ścieżki.

  • Następnie musisz zrestartować system, aby zmienne środowiskowe mogły się zmienić i teraz jesteś gotowy do pracy.

Co i dlaczego OPENCV?

OpenCV (Open Source Computer Vision Library) to biblioteka oprogramowania do wizji komputerowej i uczenia maszynowego typu open source. Został zbudowany do różnych celów, takich jak uczenie maszynowe, widzenie komputerowe, algorytm, operacje matematyczne, przechwytywanie wideo, przetwarzanie obrazu itp. Przez lata stał się bardzo popularny wśród badaczy i programistów, ponieważ obsługuje na różnych platformach (Windows, Linux , Android, iOS). Ma również opakowanie w różnych renomowanych językach programowania. Zgodnie z umową licencyjną ma dostęp dla firm do korzystania i modyfikowania kodu.

Biblioteka zawiera ponad 2500 zoptymalizowanych algorytmów, które mają doskonałą dokładność pod względem wydajności i szybkości. Algorytmy te mogą być używane do wykrywania i rozpoznawania twarzy, identyfikowania obiektów, klasyfikowania ludzkich działań w filmach, śledzenia ruchów kamery, śledzenia ruchomych obiektów, wydobywania modeli 3D obiektów, tworzenia chmur punktów 3D z kamer stereo, łączenia obrazów w celu uzyskania wysokiej rozdzielczości obraz całej sceny, znajdź podobne obrazy z bazy danych obrazów, usuń czerwone oczy ze zdjęć wykonanych za pomocą lampy błyskowej, obserwuj ruchy oczu, rozpoznawaj scenerię i ustalaj markery do nałożenia na nią rzeczywistości rozszerzonej itp. OpenCV ma świetnych ludzi i społeczność zaangażowanych jako użytkownicy , deweloperów i badaczy, liczba ta wynosi ponad 47 tysięcy, a szacowana liczba pobrań przekracza 7 milionów. Biblioteka jest szeroko dostępna w profesjonalnych firmach, grupach badawczych i innych grupach.

Wiele dobrze znanych firm, takich jak Google, Yahoo, Microsoft, Intel, IBM, Sony, Honda, Toyota, które zatrudniają bibliotekę, istnieje wiele startupów, takich jak Applied Minds, VideoSurf i Zeitera, które szeroko korzystają z OpenCV. Wdrożone przez OpenCV zastosowania obejmują łączenie obrazów widoku ulicy, wykrywanie włamań w wideo nadzoru w Izraelu, monitorowanie wyposażenia kopalni w Chinach, pomaganie robotom w nawigacji i podnoszeniu przedmiotów w Willow Garage, wykrywanie wypadków z tonięciem basenów w Europie, prowadzenie interaktywnej sztuki w Hiszpania i Nowy Jork, sprawdzając pasy startowe pod kątem zanieczyszczeń w Turcji, sprawdzając etykiety na produktach w fabrykach na całym świecie w celu szybkiego wykrycia twarzy w Japonii. Ma interfejsy C ++, C, Python, Java i MATLAB i obsługuje systemy Windows, Linux, Android i Mac OS. OpenCV skupia się głównie na aplikacjach wizyjnych w czasie rzeczywistym i wykorzystuje instrukcje MMX i SSE, jeśli są dostępne. Obecnie w pełni aktywnie rozwijane są interfejsy CUDA i OpenCL. Istnieje ponad 500 algorytmów i około 10 razy więcej funkcji, które składają się na te algorytmy lub je obsługują. OpenCV jest napisany natywnie w C ++ i ma szablonowy interfejs, który płynnie współpracuje z kontenerami STL.

Informacje zebrane z oficjalnej strony internetowej



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow