Heim  >  Artikel  >  Backend-Entwicklung  >  Python implementiert eine äußerst einfache Videoobjekt-Extraktionsfunktion

Python implementiert eine äußerst einfache Videoobjekt-Extraktionsfunktion

不言
不言Original
2018-06-04 11:03:351874Durchsuche

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:

    Der mit PS erhaltene HSB-Wert der Peppa Pig-Farbe entspricht dem HSV von OpenCV, aber der HSV (HSB)-Wert von PS beträgt: 0~360, 0~1, 0~1, während der HSV von OpenCV ist: 0 ~ 180, 0 ~ 255, 0 ~ 255, also muss der HSV von PS verarbeitet werden, H/2, SV*255; " um den HSV-Farbteil des Bildes zu extrahieren;
  • Gaußsche Unschärfe verwenden, um das Bild zu optimieren;
  • Bildanzeige;
  • PS Der HSB auf der rechten Seite der Symbolleiste zeigt an:

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn