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