Heim >Backend-Entwicklung >Python-Tutorial >Python implementiert eine äußerst einfache Videoobjekt-Extraktionsfunktion
In diesem Artikel wird hauptsächlich die in Python implementierte ultraeinfache Videoobjekt-Extraktionsfunktion vorgestellt, die einen gewissen Referenzwert hat. Jetzt kann ich sie mit allen teilen, die sie benötigen
Videoobjektextraktion
ist weniger Videoobjektextraktion als vielmehr Videofarbextraktion, da im Wesentlichen immer noch die HSV-Farbobjekterkennung von OpenCV verwendet wird. Im Folgenden gibt es nicht viel zu sagen. Werfen wir einen Blick auf die ausführliche Einführung.
HSV-Einführung
HSV steht für Farbton (H: Farbton), Sättigung (S: Sättigung), Helligkeit (V:
Farbton (H: Farbton): gemessen in Winkel, mit einem Wertebereich von 0°~360°, beginnend bei Rot und wenn man gegen den Uhrzeigersinn zählt, ist Rot 0°, Grün ist 120° und Blau ist 240°. Ihre Komplementärfarben sind: Gelb ist 60°, Cyan ist 180° und Magenta ist 300° (der Wertebereich von H in OpenCV beträgt 0~180, wenn es in 8 Bits gespeichert wird); : Sättigung): Der Wertebereich liegt zwischen 0 und 255. Je größer der Wert, desto gesättigter ist die Farbe.
Helligkeit (V: Wert): Der Wertebereich liegt zwischen 0 (Schwarz) und 255 (Weiß);
Wirkungsdarstellung
Umsetzungsideen
Wie in der Darstellung oben gezeigt, müssen wir nur das grüne Peppa Pig im Video identifizieren. Im Folgenden sind die Identifizierungsschritte aufgeführt:
Vollständiger Code
#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()
Verwandte Empfehlungen:
Verwenden von Python zum Implementieren des Beispielcodes für die Video-Download-Funktion
Das obige ist der detaillierte Inhalt vonPython implementiert eine äußerst einfache Videoobjekt-Extraktionsfunktion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!