OpenCV (Open Source Computer Vision Library) ist eine Sammlung von BSD-lizenzierten Video- / Bildverarbeitungsbibliotheken. Es gibt viele Algorithmen wie Bildfilterung, Vorlagenabgleich, Objekterkennung, Videoanalyse und maschinelles Lernen.
Beispiel für Bewegungsverfolgung mit OpenCV (OpenCV Google Summer of Code 2015) https://www.youtube.com/watch?v=OUbUFn71S4s
Klicken Sie hier für die Installation und einfache Verwendung http://qiita.com/olympic2020/items/d5d475a446ec9c73261e
Klicken Sie hier, um Standbilder zu filtern Versuchen Sie die Kantenerkennung mit OpenCV
Klicken Sie hier, um Videodateien zu verarbeiten Versuchen Sie, Videos in Echtzeit mit OpenCV zu konvertieren Versuchen Sie, Webkamera- / Videokamera-Videos in Echtzeit mit OpenCV zu konvertieren
Dieses Mal werde ich verschiedene Filter anwenden.
Die diesmal eingeführten Filter sind wie folgt.
Die Matrix zum Durchführen verschiedener Filterprozesse wird als Kernel bezeichnet. Das Programm führt für jeden Filter die folgende Verarbeitung durch.
filter.py
import cv2
import numpy as np
#Konstante Definition
FILE_ORG = "img.png "
FILE_GRAY = "gray.png "
FILE_GRADIENT = "gradient.png "
FILE_HIGH_PASS = "highpass.png "
FILE_LAPLACIAN_3x3 = "laplacian3x3.png "
FILE_LAPLACIAN_5x5 = "laplacian5x5.png "
FILE_GAUSSIAN = "gaussian.png "
#Laden Sie das Originalbild
img_org = cv2.imread(FILE_ORG, cv2.IMREAD_COLOR)
#Graustufenumwandlung
img_gray = cv2.cvtColor(img_org, cv2.COLOR_BGR2GRAY)
cv2.imwrite(FILE_GRAY, img_gray)
#Verlaufsfilter (3x3)
kernel_gradient_3x3 = np.array([
[ 1, 1, 1],
[ 0, 0, 0],
[-1, -1, -1]
], np.float32)
img_gradient_3x3 = cv2.filter2D(img_gray, -1, kernel_gradient_3x3)
cv2.imwrite(FILE_GRADIENT_3x3, img_gradient_3x3)
#Verlaufsfilter (5x5)
kernel_gradient_5x5 = np.array([
[ 5, 5, 5, 5, 5],
[ 3, 3, 3, 3, 3],
[ 0, 0, 0, 0, 0],
[-3, -3, -3, -3, -3],
[-5, -5, -5, -5, -5]
], np.float32)
img_gradient_5x5 = cv2.filter2D(img_gray, -1, kernel_gradient_5x5)
cv2.imwrite(FILE_GRADIENT_5x5, img_gradient_5x5)
#Hochpassfilter
kernel_high_pass = np.array([
[-1, -1, -1],
[-1, 8, -1],
[-1, -1, -1]
], np.float32)
img_high_pass = cv2.filter2D(img_gray, -1, kernel_high_pass)
cv2.imwrite(FILE_HIGH_PASS, img_high_pass)
#Laplace-Filter (3x3)
kernel_laplacian_3x3 = np.array([
[1, 1, 1],
[1, -8, 1],
[1, 1, 1]
], np.float32)
img_laplacian_3x3 = cv2.filter2D(img_gray, -1, kernel_laplacian_3x3)
cv2.imwrite(FILE_LAPLACIAN_3x3, img_laplacian_3x3)
#Laplace-Filter (5x5)
kernel_laplacian_5x5 = np.array([
[-1, -3, -4, -3, -1],
[-3, 0, 6, 0, -3],
[-4, 6, 20, 6, -4],
[-3, 0, 6, 0, -3],
[-1, -3, -4, -3, -1]
], np.float32)
img_laplacian_5x5 = cv2.filter2D(img_gray, -1, kernel_laplacian_5x5)
cv2.imwrite(FILE_LAPLACIAN_5x5, img_laplacian_5x5)
#Gaußscher Filter
kernel_gaussian = np.array([
[1, 2, 1],
[2, 4, 2],
[1, 2, 1]
], np.float32) / 16
img_gaussian = cv2.filter2D(img_gray, -1, kernel_gaussian)
cv2.imwrite(FILE_GAUSSIAN, img_gaussian)
Es ist ein Bild des Ausführungsergebnisses. Der 3x3-Filter erfasst die Gebäudekanten scharf. Auf der anderen Seite erfasst der 5x5-Filter große Änderungen in der Landschaft.
** Das Originalbild **
** Graustufen **
** Verlaufsfilter (3x3) **
** Verlaufsfilter (5x5) **
** Hochpassfilter **
** Laplace-Filter (3x3) **
** Laplace-Filter (5x5) **
** Gaußscher Filter **