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
Unabhängig davon, welche Art von Videoverarbeitung Sie ausführen, ist es einfach, ein Bild zu filtern. Dieses Mal werde ich als Grundlage für die Bildverarbeitung das Farbbild in RGB-Bilder aufteilen und diese anzeigen.
Ich werde den Algorithmus erklären, der Farbbilder in RGB trennt. Zunächst wird das Farbbild in RGB aufgeteilt. Dies kann einfach mit cv2.split () durchgeführt werden. Da das getrennte Bild nur für einen Kanal gilt, wird es als Graustufen angezeigt, wenn es so angezeigt wird, wie es ist. Nach der Trennung in RGB muss zur Anzeige in jeder Farbe ein Farbbild erstellt werden, in dem andere Farben durch ein mit Null gefülltes Bild ergänzt werden. Mit Numpy.zeros () wird ein mit Null gefülltes Bild erstellt, und mit cv2.merge () werden 3 Kanäle zu einem Bild kombiniert.
Ich habe versucht, ein schematisches Diagramm des Ablaufs der Trennung von RGB und der Anzeige in jeder Farbe zu erstellen. Bitte beziehen Sie sich darauf, wenn Sie das Programm verstehen.
channels.py
import cv2
import numpy as np
#Konstante Definition
FILE_PREFIX = "google"
ORG_FILE_NAME = "google_org.png "
BLUE_FILE_NAME = FILE_PREFIX + "_b.png "
GREEN_FILE_NAME = FILE_PREFIX + "_g.png "
RED_FILE_NAME = FILE_PREFIX + "_r.png "
ORG_WINDOW_NAME = "org"
BLUE_WINDOW_NAME = "blue"
GREEN_WINDOW_NAME = "green"
RED_WINDOW_NAME = "red"
#Laden Sie das Originalbild
org_img = cv2.imread(ORG_FILE_NAME, cv2.IMREAD_COLOR)
#Null-gefülltes Bildarray
if len(org_img.shape) == 3:
height, width, channels = org_img.shape[:3]
else:
height, width = org_img.shape[:2]
channels = 1
zeros = np.zeros((height, width), org_img.dtype)
#RGB-Trennung
img_blue_c1, img_green_c1, img_red_c1 = cv2.split(org_img)
img_blue_c3 = cv2.merge((img_blue_c1, zeros, zeros))
img_green_c3 = cv2.merge((zeros, img_green_c1, zeros))
img_red_c3 = cv2.merge((zeros, zeros, img_red_c1))
#Erstellen Sie ein Fenster
cv2.namedWindow(ORG_WINDOW_NAME)
cv2.namedWindow(BLUE_WINDOW_NAME)
cv2.namedWindow(GREEN_WINDOW_NAME)
cv2.namedWindow(RED_WINDOW_NAME)
#Im Fenster anzeigen
cv2.imshow(ORG_WINDOW_NAME, org_img)
cv2.imshow(BLUE_WINDOW_NAME, img_blue_c3)
cv2.imshow(GREEN_WINDOW_NAME, img_green_c3)
cv2.imshow(RED_WINDOW_NAME, img_red_c3)
#Speichern unter
cv2.imwrite(BLUE_FILE_NAME, img_blue_c3)
cv2.imwrite(GREEN_FILE_NAME, img_green_c3)
cv2.imwrite(RED_FILE_NAME, img_red_c3)
#Verarbeitung beenden
cv2.waitKey(0)
cv2.destroyAllWindows()
Wenn Sie in cv2.imread () cv2.IMREAD_UNCHANGED angeben, können Sie die Informationen von 4 Kanälen mit der α-Ebene abrufen. Wenn Sie andererseits cv2.IMREAD_COLOR in cv2.imread () angeben, können Sie nur die Informationen von 3 Kanälen der RGB-Ebene abrufen. Dieses Mal habe ich cv2.IMREAD_COLOR angegeben, um nur RGB zu erhalten.
Ich habe versucht, das Originalbild, das den weißen Teil der Google-Startseite verarbeitet hat, mit einem Skript in Schwarz zu trennen.
** Das Originalbild **
Blue
Green
Red
Recommended Posts