Lors de l'initialisation de l'écran avec OpenCV, je voulais colorer l'arrière-plan, mais j'ai eu plus de mal que prévu, j'ai donc pris une note.
En regardant Traitement de base de cv :: Mat, OpenCV1 utilise une structure appelée IplImage comme données d'image, tandis qu'OpenCV2 utilise cv :: Il a changé pour utiliser une classe appelée Mat.
Dans OpenCV1, il est initialisé par cvCreateImage, mais le problème est de savoir quoi faire avec OpenCV2.
Dans le cas de Python, la structure de séquence de numpy peut être utilisée telle quelle, alors j'ai pensé que ce serait facile une fois que je m'y serais habitué, mais je n'y suis pas habitué, donc je ne sais pas quoi faire avec l'échantillon C d'OpenCV1.
Quand je suis allé sur Internet, il y avait différentes méthodes, alors j'ai essayé de les organiser. À propos, lors de l'affichage d'images avec OpenCV, l'ordre des couleurs est BGR.
example_colorfill.py
# coding: UTF-8
import numpy as np
import cv2
#10 x 10 3 couches(BGR)Définir
size = 10, 10, 3
# cv2.Remplissez le rouge avec fillPoly
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.Remplissez le bleu avec un rectangle
blue_img = np.zeros(size, dtype=np.uint8)
cv2.rectangle(blue_img,(0,0),(10,10),(255,0,0),cv2.cv.CV_FILLED)
# np.Remplissez le blanc avec le remplissage
white_img = np.zeros(size, dtype=np.uint8)
white_img.fill(255)
# np.Remplissez le vert avec des carreaux
green_img = np.tile(np.uint8([0,255,0]), (10,10,1))
#Remplissez le gris avec une seule gradation 10 x 10
gray_img = np.tile(np.uint8([127]), (10,10,1))
#Remplissez la liste du début à la fin en violet
#référence: 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)
#Convertir la séquence RVB en BGR et remplir en jaune
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)
Une fois exécutées, les images remplies de chaque couleur seront affichées.
Je pense que c'est soit une méthode de remplissage avec 0 d'abord et de remplissage avec une opération couleur par liste, soit une méthode de remplissage avec couleur depuis le début avec np.tile.
Quoi qu'il en soit, il semble qu'il ne soit pas compatible avec C ++.
Recommended Posts