Motive De Comment ne sauvegarder qu'une partie d'une longue vidéo en utilisant OpenCV, j'ai traité l'image de la vidéo politique diffusée comme un ensemble de données, mais cette fois ʻinpaint` Essayez d'effacer l'objet à l'aide de (Réparation d'image). La raison en est que l'arrière-plan est monotone et que rien n'est affiché à part l'heure telop et la pancarte du nom du parti, j'ai donc pensé que ce serait facile à réparer.
Dataset Ici, nous utiliserons la capture suivante à la place de la vidéo.
Method Créez une image de masque à l'avance et remplissez la zone que vous souhaitez réparer (supprimer l'objet) de blanc.
Après ça,
cv2.inpaint(src,mask,1,cv2.INPAINT_TELEA)
Processus utilisant.
Development
import cv2
import os
import numpy as np
def inpaint(src,top,bottom):
mask = np.zeros((*src.shape[:-1],1), dtype=np.uint8)
mask = cv2.rectangle(mask,
top,
bottom,
color=(255,255,255),
thickness=cv2.FILLED
)
dst = cv2.inpaint(src,mask,1,cv2.INPAINT_TELEA)
return dst
if __name__ == '__main__':
window_name = "Drop Out NHK"
mat = cv2.imread("capture_1.png ")
mat = cv2.resize(mat, None, fx = 0.5, fy = 0.5)
dst = inpaint(mat,(200,40),(440,110))
dst = inpaint(dst,(40,25),(115,65))
cv2.imshow(window_name, dst)
cv2.waitKey(0)
cv2.destroyWindow(window_name)
Result
J'ai pu traiter plus que ce à quoi je m'attendais. : sweat_smile: Il est difficile de croire que l'heure et le nom de la fête ont été affichés.
Future
Note de développement n ° 69 Utilisation d'Inpaint avec OpenCV 3.2 avec le module Contrib
En regardant, il semble que C ++ a une fonction avec une plus grande précision que cv2.inpaint
.
Vous pouvez peut-être utiliser C ++ pour bien effacer les sous-titres.
Reference
Recommended Posts