Home  >  Article  >  Backend Development  >  Python implements ultra-simple video object extraction function

Python implements ultra-simple video object extraction function

不言
不言Original
2018-06-04 11:03:351910browse

This article mainly introduces the ultra-simple video object extraction function implemented in python, which has certain reference value. Now I share it with everyone. Friends in need can refer to it

Video object extraction

# is not so much video object extraction as video color extraction, because its essence still uses OpenCV’s HSV color object detection. Not much to say below, let’s take a look at the detailed introduction.

HSV introduction

HSV stands for hue (H: hue), saturation (S: saturation), brightness ( V: value), a color space created by A. R. Smith in 1978, also called the Hexcone Model;

Hue (H: hue): measured in angle, with a value range of 0°~360°, starting from red and counting in counterclockwise direction, red is 0°, green is 120°, and blue is 240°. Their complementary colors are: yellow is 60°, cyan is 180°, and magenta is 300°; (the value range of H in OpenCV is 0~180, when 8bit is stored);

Saturation (S: saturation): The value range is 0~255. The larger the value, the more saturated the color;

Brightness (V: value): The value range is 0 (black) ~ 255 (white);

Effect display


#Implementation ideas

As shown in the rendering above, all we have to do is to identify the green Peppa Pig in the video. The following are the identification steps:

  • The HSB value of the Peppa Pig color obtained using PS is equivalent to the HSV of OpenCV, but the HSV (HSB) value of PS is: 0~360, 0~1, 0~1, while the HSV of OpenCV is: 0 ~180, 0~255, 0~255, so the hsv of ps needs to be processed, H/2, SV*255;

  • Use OpenCV bit "AND operation" to extract the HSV Color part of the picture;

  • Use Gaussian blur to optimize the picture;

  • Picture display;

PS The HSB on the right side of the toolbar displays:


Full 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()

Related recommendations:


Using Python to implement video download function example code

##

The above is the detailed content of Python implements ultra-simple video object extraction function. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn