[PYTHON] Trennen Sie Farbbilder in RGB-Bilder und zeigen Sie sie mit OpenCV an

Einführung

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.

RGB-Trennungsalgorithmus

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.

separate.png

Programm

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.

Ausführungsergebnis

Ich habe versucht, das Originalbild, das den weißen Teil der Google-Startseite verarbeitet hat, mit einem Skript in Schwarz zu trennen.

google_org.png ** Das Originalbild **

google_b.png             Blue

google_g.png             Green

google_r.png             Red

Recommended Posts

Trennen Sie Farbbilder in RGB-Bilder und zeigen Sie sie mit OpenCV an
Bilder mit Pupil, Python und OpenCV aufnehmen
Wavelet-Konvertierung von Bildern mit PyWavelets und OpenCV
Zeigen Sie eingebettete Bilder von MP3 und Flac mit Mutagen an
Ich habe ein Programm erstellt, um Bilder mit Python und OpenCV in ASCII-Grafik umzuwandeln
Lesen Sie die VTK-Datei und zeigen Sie die Farbkarte mit Jupiter an.
[Python] Versuchen Sie, Zeichen aus Bildern mit OpenCV und pyocr zu erkennen
Leuchtendes Leben mit Python und OpenCV
Laden Sie das GIF-Bild mit Python + OpenCV
Zeichnen Sie Figuren mit OpenCV und PIL
Laden Sie Bilder mit Falcon hoch und laden Sie sie herunter
Versuchen Sie, den Hintergrund und das sich bewegende Objekt des Videos mit OpenCV zu trennen
[python, openCV] base64 Gesichtserkennung in Bildern
[Python] Bilder mit OpenCV lesen (für Anfänger)
Importieren und Exportieren von GeoTiff-Bildern mit Python
Schneiden Sie Bilder aus und verbinden Sie sie mit ImageMagick