J'ai essayé de faire de la vidéo de diffusion Masami comme IPPON Grand Prix (OpenCV: version Python)

Déclencheur

Lorsque j'ai essayé de binariser les personnages de la vidéo, seuls la personne et le telop ont été extraits probablement parce que l'arrière-plan n'était pas dans l'environnement naturel et que rien n'était reflété, mais si la couleur de fond était jaune Je pensais que cela ressemblerait à un Grand Prix IPPON, alors je l'ai implémenté.

développement de

import cv2
import numpy as np

if __name__ == '__main__':

	cap = cv2.VideoCapture('one_minutes.mp4')

	cap_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
	cap_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
	fps = cap.get(cv2.CAP_PROP_FPS)

	telop_height = 50

	fourcc = cv2.VideoWriter_fourcc('m','p','4','v')
	writer = cv2.VideoWriter('threshold_raw.mp4',fourcc, fps, (cap_width, cap_height + telop_height))

	kernel = np.ones((3,3),np.uint8)

	count = 0
	try :
		while True:
			if not cap.isOpened():
				break

			if cv2.waitKey(1) & 0xFF == ord('q'):
				break

			ret, frame = cap.read()

			if frame is None:
				break

			frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
			ret2, frame = cv2.threshold(frame, 0, 255, cv2.THRESH_OTSU)

			#Rétrécir->expansion
			frame = cv2.morphologyEx(frame, cv2.MORPH_OPEN, kernel)

			background = np.zeros((cap_height, cap_width, 3), np.uint8)
			background[:] = tuple((80,235,247))

			telop = np.zeros((telop_height, cap_width, 3), np.uint8)
			telop[:] = tuple((128,128,128))

			#Une fois monochrome(dim=1)De la couleur(dim=3)Conversion en
			frame = cv2.cvtColor(frame, cv2.COLOR_GRAY2BGR)
			#Couleur et composition d'arrière-plan
			frame = cv2.bitwise_and(frame, background)

			images = [frame, telop]

			frame = np.concatenate(images, axis=0)
			font = cv2.FONT_HERSHEY_SIMPLEX
			cv2.putText(frame, "{:.4f} [sec]".format(round(count/fps, 4)), 
						(cap_width - 250, cap_height + telop_height - 10), 
						font, 
						1, 
						(0, 0, 255), 
						2, 
						cv2.LINE_AA)

			writer.write(frame)
			count += 1

	except cv2.error as e:
		print(e)	

	writer.release()
	cap.release()

Supplément

ret2, frame = cv2.threshold(frame, 0, 255, cv2.THRESH_OTSU) Il est binarisé avec. Ici, l'algorithme d'Otsu est utilisé.

frame = cv2.morphologyEx(frame, cv2.MORPH_OPEN, kernel) Maintenant rétrécissez-> augmentez à partir de l'image binarisée et les taches blanches sont noircies au stade de la contraction pour éliminer le bruit.


background = np.zeros((cap_height, cap_width, 3), np.uint8)
			background[:] = tuple((80,235,247))
background[:] = tuple((80,235,247))

#Une fois monochrome(dim=1)De la couleur(dim=3)Conversion en
frame = cv2.cvtColor(frame, cv2.COLOR_GRAY2BGR)
#Couleur et composition d'arrière-plan
frame = cv2.bitwise_and(frame, background)

Crée une seule couleur d'arrière-plan jaune et la combine avec l'image binarisée avec bitwise_and.

résultat

Pas de processus d'ouverture (pas de traitement)

threshold_raw.gif

Avec processus d'ouverture

threshold_open.gif

Cela peut être un peu déroutant, mais si vous regardez les noms des groupes ci-dessus, vous pouvez voir que le bruit disparaît lorsque la contraction est réduite.

en conclusion

J'ai pu séparer les objets assez proprement, donc la prochaine fois j'essaierai d'extraire les personnages.

Lien auquel j'ai essayé de me référer

Recommended Posts

J'ai essayé de faire de la vidéo de diffusion Masami comme IPPON Grand Prix (OpenCV: version Python)
J'ai essayé d'afficher le temps de lecture de la vidéo (OpenCV: version Python)
J'ai essayé de reconnaître le visage de la vidéo (OpenCV: version python)
J'ai essayé de créer une fonction de similitude d'image avec Python + OpenCV
J'ai essayé de "lisser" l'image avec Python + OpenCV
J'ai essayé de "différencier" l'image avec Python + OpenCV
J'ai essayé de "binariser" l'image avec Python + OpenCV
[Python] Smasher a essayé de faire du processus de chargement de la vidéo une fonction à l'aide d'un générateur
J'ai essayé de représenter graphiquement les packages installés en Python
J'ai essayé de toucher un fichier CSV avec Python
J'ai essayé de résoudre Soma Cube avec python
Suite ・ J'ai essayé de créer Slackbot après avoir étudié Python3
[Python] J'ai essayé de représenter graphiquement le top 10 des ombres à paupières
J'ai essayé de résoudre le problème avec Python Vol.1
Python Open CV a essayé d'afficher l'image sous forme de texte.
J'ai essayé de résumer les opérations de chaîne de Python
J'ai essayé de faire quelque chose comme un chatbot avec le modèle Seq2Seq de TensorFlow
(Python: OpenCV) J'ai essayé de générer une valeur indiquant la distance entre les régions tout en binarisant la vidéo en temps réel.
J'ai essayé la "correction gamma" de l'image avec Python + OpenCV
J'ai essayé de créer diverses "données factices" avec Python faker
[Python] J'ai essayé de visualiser la relation de suivi de Twitter
J'ai essayé d'implémenter la fonction d'envoi de courrier en Python
J'ai essayé d'énumérer les différences entre java et python
J'ai fait un chronomètre en utilisant tkinter avec python
J'ai essayé de créer une interface graphique à trois yeux côte à côte avec Python et Tkinter
J'ai essayé de changer le script python de 2.7.11 à 3.6.0 sur Windows10
J'ai essayé de rendre possible l'envoi automatique d'un e-mail en double-cliquant simplement sur l'icône [Python]
J'ai essayé de trouver la différence entre A + = B et A = A + B en Python, alors notez
[Python] J'ai essayé de créer un programme simple qui fonctionne sur la ligne de commande en utilisant argparse
J'ai essayé de résoudre l'édition du débutant du livre des fourmis avec python
Je veux lire la version html de la version "OpenCV-Python Tutorials" OpenCV 3.1
[Python] J'ai essayé d'implémenter un tri stable, alors notez
J'ai essayé de créer une expression régulière de "temps" en utilisant Python
[3ème] J'ai essayé de créer un certain outil de type Authenticator avec python
J'ai essayé de traiter l'image en "style croquis" avec OpenCV
J'ai essayé de créer une expression régulière de "date" en utilisant Python
J'ai essayé de numériser le tampon estampé sur papier en utilisant OpenCV
J'ai essayé de faire un processus d'exécution périodique avec Selenium et Python
J'ai essayé de créer une application de notification de publication à 2 canaux avec Python
J'ai essayé de traiter l'image dans un "style de dessin au crayon" avec OpenCV
J'ai essayé de créer une application todo en utilisant une bouteille avec python
[4th] J'ai essayé de créer un certain outil de type Authenticator avec python
[Python] Japonais simple ⇒ J'ai essayé de créer un outil de traduction en anglais
J'ai essayé de couper une image fixe de la vidéo
[1er] J'ai essayé de créer un certain outil de type Authenticator avec python
J'ai essayé d'améliorer l'efficacité du travail quotidien avec Python
J'ai essayé de toucher Python (installation)
Comment obtenir la version Python
J'ai essayé de déplacer le ballon
J'ai essayé d'estimer la section.
J'ai essayé de rendre possible l'envoi automatique d'un e-mail en double-cliquant simplement sur l'icône [GAS / Python]
[Python] J'ai essayé de visualiser la nuit du chemin de fer de la galaxie avec WordCloud!
Lorsque j'ai essayé d'exécuter Python, j'ai été ignoré dans le Microsoft Store
Python -J'ai essayé de restaurer la notation complète du dictionnaire dans sa forme d'origine-
J'ai essayé de résoudre 100 traitements linguistiques Knock version 2020 [Chapitre 3: Expressions régulières 25-29]
[Python] J'ai essayé d'analyser le lanceur qui n'a réussi aucun coup, aucune course
[AWS] [GCP] J'ai essayé de rendre les services cloud faciles à utiliser avec Python
J'ai essayé d'obtenir le code d'authentification de l'API Qiita avec Python.