Afin de changer le drapeau japonais en drapeau des Palaos, nous avons effectué un traitement d'image simple avec numpy.
** drapeau japonais-Wikipedia ** Le drapeau japonais (Nippon no Kokki, Nihon no Kokki) est légalement appelé le Nisshoki, et depuis les temps anciens au Japon, il a été généralement appelé le Hinomaru.
** Drapeau des Palaos-Wikipedia ** Le drapeau de la République des Palaos (Beluu er a Belau) est un drapeau avec un cercle jaune disposé légèrement plus près du mât au centre et un fond bleu vif.
kokki.py
import cv2
import numpy as np
img = cv2.imread("./test/japan.png ").astype(np.float32)
H, W, C = img.shape
b = img[:, :, 0].copy()
g = img[:, :, 1].copy()
r = img[:, :, 2].copy()
# Gray scale
img = 0.2126 * r + 0.7152 * g + 0.0722 * b
# Binarization
img[img < 100] = 0
H_new = np.ceil((H+W) * 5 / 13).astype(np.int)
W_new = np.ceil((H+W) * 8 / 13).astype(np.int)
_img = np.zeros((H_new, W_new, C), dtype=np.float)
_img[..., 0] = 214
_img[..., 1] = 173
_img[..., 2] = 74
for i in range(H):
for j in range(W):
if img[i, j] == 0:
h = H // 2 - i
w = W // 2 - j
_img[H_new//2 - h, W_new//2 - w - H_new//10, 0] = 0
_img[H_new//2 - h, W_new//2 - w - H_new//10, 1] = 209
_img[H_new//2 - h, W_new//2 - w - H_new//10, 2] = 255
out = _img.astype(np.uint8)
# Save result
cv2.imshow("result", out)
cv2.waitKey(0)
cv2.imwrite("./test/palau.png ", out)
Créez un tableau dans lequel la taille du drapeau japonais est convertie en rapport hauteur / largeur du drapeau des Palaos. Après cela, ajoutez la couleur d'arrière-plan au tableau vide. Puisque le code couleur est # 4AADD6, utilisez la valeur obtenue en le convertissant en BGR. Ici, un cercle est détecté à partir du drapeau japonais binarisé à l'aide d'un balayage raster, et les coordonnées du drapeau des Palaos sont obtenues à partir des coordonnées x et y et BGR est inséré. (Le code couleur est # FFD100)
Image d'entrée
Image de sortie
Je suis seul à Palau, alors je vais essayer avec le drapeau du Bangladesh.
kokki2.py
import cv2
import numpy as np
img = cv2.imread("./test/japan.png ").astype(np.float32)
H, W, C = img.shape
b = img[:, :, 0].copy()
g = img[:, :, 1].copy()
r = img[:, :, 2].copy()
# Gray scale
img = 0.2126 * r + 0.7152 * g + 0.0722 * b
# Binarization
img[img < 100] = 0
H_new = np.ceil((H+W) * 3 / 8).astype(np.int)
W_new = np.ceil((H+W) * 5 / 8).astype(np.int)
_img = np.zeros((H_new, W_new, C), dtype=np.float)
_img[..., 0] = 81
_img[..., 1] = 102
_img[..., 2] = 0
for i in range(H):
for j in range(W):
if img[i, j] == 0:
h = H // 2 - i
w = W // 2 - j
_img[H_new//2 - h, W_new//2 - w - H_new//10, 0] = 73
_img[H_new//2 - h, W_new//2 - w - H_new//10, 1] = 6
_img[H_new//2 - h, W_new//2 - w - H_new//10, 2] = 233
out = _img.astype(np.uint8)
# Save result
cv2.imshow("result", out)
cv2.waitKey(0)
cv2.imwrite("./test/bangladesh.png ", out)
Le rapport hauteur / largeur pour Palau est réglé sur 3: 5 et la couleur est modifiée.
Résultat d'exécution
Les Palaos et le Bangladesh ne sont pas très différents ...
Recommended Posts