Python implémente une fonction d'extraction d'objets vidéo ultra-simple

不言
Libérer: 2018-06-04 11:03:35
original
1928 Les gens l'ont consulté

Cet article présente principalement la fonction d'extraction d'objets vidéo ultra-simple implémentée en Python, qui a une certaine valeur de référence. Maintenant, je la partage avec tout le monde. Les amis dans le besoin peuvent s'y référer

L'extraction d'objets vidéo

n'est pas tant une extraction d'objets vidéo que une extraction de couleurs vidéo, car son essence utilise toujours la détection d'objets couleur HSV d'OpenCV. Pas grand chose à dire ci-dessous, jetons un œil à l’introduction détaillée.

Introduction au HSV

HSV signifie teinte (H : teinte), saturation (S : saturation), luminosité ( V : value), un espace colorimétrique créé par A. R. Smith en 1978, également appelé modèle Hexcone ;

Teinte (H : teinte) : mesurée en angle, avec une plage de valeurs de 0°~360°, à partir du rouge. et en comptant dans le sens inverse des aiguilles d'une montre, le rouge est 0°, le vert est 120° et le bleu est 240°. Leurs couleurs complémentaires sont : le jaune est de 60°, le cyan est de 180° et le magenta est de 300° (la plage de valeurs de H dans OpenCV est de 0 à 180, lorsqu'il est stocké sur 8 bits

Saturation (S) ; : saturation) : la plage de valeurs est de 0 à 255, plus la valeur est grande, plus la couleur est saturée ;

Luminosité (V : valeur) : la plage de valeurs est de 0 (noir) à 255 (blanc) ;

Affichage des effets


Idées de mise en œuvre

Comme le montre le rendu ci-dessus, il ne nous reste plus qu'à identifier le Peppa Pig vert dans la vidéo. Voici les étapes d'identification :

    .
  • La valeur HSB de la couleur Peppa Pig obtenue en utilisant PS est équivalente au HSV d'OpenCV, mais la valeur HSV (HSB) de PS est : 0~360, 0~1, 0~1, tandis que la valeur HSV d'OpenCV est : 0 ~ 180, 0 ~ 255, 0 ~ 255, donc le hsv de ps doit être traité, H/2, SV*255 ;

  • Utilisez le bit OpenCV "ET" " pour extraire une partie HSV Color de l'image ;

  • Utiliser le flou gaussien pour optimiser l'image ;

  • Affichage de l'image ;

PS Le HSB sur le côté droit de la barre d'outils affiche :


Code complet

#coding=utf-8
#HSV转换(颜色提取)

import cv2
import numpy as np

cap = cv2.VideoCapture(0)

while (1):
 _, frame = cap.read()
 hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)

 #在PS里用取色器的HSV
 psHSV = [112, 89, 52]
 diff = 40 #上下浮动值
 #因为PS的HSV(HSB)取值是:0~360、0~1、0~1,而OpenCV的HSV是:0~180、0~255、0~255,所以要对ps的hsv进行处理,H/2、SV*255
 lowerHSV = [(psHSV[0] - diff) / 2, (psHSV[1] - diff) * 255 / 100,
    (psHSV[2] - diff) * 255 / 100]
 upperHSV = [(psHSV[0] + diff) / 2, (psHSV[1] + diff) * 255 / 100,
    (psHSV[2] + diff) * 255 / 100]

 mask = cv2.inRange(hsv, np.array(lowerHSV), np.array(upperHSV))

 #使用位“与运算”提取颜色部分
 res = cv2.bitwise_and(frame, frame, mask=mask)
 #使用高斯模式优化图片
 res = cv2.GaussianBlur(res, (5, 5), 1)

 cv2.imshow('frame', frame)
 # cv2.imshow('mask', mask)
 cv2.imshow('res', res)
 if cv2.waitKey(1) & 0xFF == ord('q'):
  break

cv2.destroyAllWindows()
Copier après la connexion

Recommandations associées :


Utilisation de Python pour implémenter un exemple de code de fonction de téléchargement vidéo

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal