Als ich den Bildschirm mit OpenCV initialisierte, wollte ich den Hintergrund einfärben, aber ich hatte mehr Probleme als erwartet, also machte ich mir eine Notiz.
In Grundlegende Verarbeitung von cv :: Mat verwendet OpenCV1 eine Struktur namens IplImage als Bilddaten, während OpenCV2 cv :: verwendet. Es wurde geändert, um eine Klasse namens Mat zu verwenden.
In OpenCV1 wird es von cvCreateImage initialisiert, aber der Punkt ist, was mit OpenCV2 zu tun ist.
Im Fall von Python kann die Sequenzstruktur von numpy so verwendet werden, wie sie ist. Ich dachte, es wäre einfach, wenn ich mich erst einmal daran gewöhnt hätte, aber ich bin nicht daran gewöhnt, sodass ich nicht weiß, was ich mit dem C-Beispiel von OpenCV1 machen soll.
Als ich ins Internet ging, gab es verschiedene Methoden, also habe ich versucht, sie zu arrangieren. Bei der Anzeige von Bildern mit OpenCV ist die Reihenfolge der Farben übrigens BGR.
example_colorfill.py
# coding: UTF-8
import numpy as np
import cv2
#10 x 10 3 Schichten(BGR)Definieren
size = 10, 10, 3
# cv2.Füllen Sie rot mit fillPoly aus
red_img = np.zeros(size, dtype=np.uint8)
contours = np.array( [ [0,0], [0,10], [10, 10], [10,0] ] )
cv2.fillPoly(red_img, pts =[contours], color=(0,0,255))
# cv2.Füllen Sie blau mit Rechteck
blue_img = np.zeros(size, dtype=np.uint8)
cv2.rectangle(blue_img,(0,0),(10,10),(255,0,0),cv2.cv.CV_FILLED)
# np.Füllen Sie Weiß mit Füllung
white_img = np.zeros(size, dtype=np.uint8)
white_img.fill(255)
# np.Füllen Sie grün mit Fliesen
green_img = np.tile(np.uint8([0,255,0]), (10,10,1))
#Füllen Sie grau mit 10 x 10 einzelnen Abstufungen
gray_img = np.tile(np.uint8([127]), (10,10,1))
#Füllen Sie die Liste von Anfang bis Ende in lila
#Referenz: http://stackoverflow.com/questions/4337902/how-to-fill-opencv-image-with-one-solid-color
purple_img = np.zeros(size, dtype=np.uint8)
purple_img[:] = (255, 0, 255)
#Konvertieren Sie die RGB-Sequenz in BGR und füllen Sie sie gelb aus
yellow_img = np.zeros(size, dtype=np.uint8)
rgb_color = (255,255,0);
yellow_img[:] = tuple(reversed(rgb_color))
cv2.namedWindow("yellow image", cv2.WINDOW_AUTOSIZE)
cv2.imshow("yellow image",yellow_img)
cv2.namedWindow("purple image", cv2.WINDOW_AUTOSIZE)
cv2.imshow("purple image",purple_img)
cv2.namedWindow("gray image", cv2.WINDOW_AUTOSIZE)
cv2.imshow("gray image",gray_img)
cv2.namedWindow("green image", cv2.WINDOW_AUTOSIZE)
cv2.imshow("green image",green_img)
cv2.namedWindow("white image", cv2.WINDOW_AUTOSIZE)
cv2.imshow("white image",white_img)
cv2.namedWindow("red image", cv2.WINDOW_AUTOSIZE)
cv2.imshow("red image",red_img)
cv2.namedWindow("blue image", cv2.WINDOW_AUTOSIZE)
cv2.imshow("blue image",blue_img)
cv2.waitKey(0)
Bei der Ausführung werden die mit jeder Farbe gefüllten Bilder angezeigt.
Ich denke, es ist entweder eine Methode zum Füllen mit 0 zuerst und zum Füllen mit Farbe durch Listenoperation oder eine Methode zum Füllen mit Farbe von Anfang an mit np.tile.
In beiden Fällen scheint es nicht mit C ++ kompatibel zu sein.
Recommended Posts