2. Color recognition

2.1. Introduction to HSV color space:

RGB color space is the most familiar color space, that is, the three-primary color space. Any color can be mixed from these three colors. However, the effective processing of color space images is generally carried out in HSV space. HSV (hue, saturation, brightness value) is a color space created based on the intuitive characteristics of color, also known as the hexagonal pyramid model.

Why choose HSV space instead of RGB space? For images, it is feasible to identify the corresponding color in RGB space, HSV space or other color spaces. The reason for choosing HSV is that the hue represented by H can basically determine a certain color, and then combined with the saturation and brightness information to judge whether it is greater than a certain threshold. RGB is composed of three components, and the contribution ratio of each component needs to be judged. That is, the recognition range of HSV space is wider and more convenient.

The following figure is the HSV color space model

2.2. Conversion of three color spaces (gray BGR HSV):

There are more than 150 color space conversion methods in OpenCV, but we often use only two, namely BGR->Gray and BGR->HSV. Note that Gray and HSV cannot be converted to each other. Color space conversion: cv2.cvtColor(input_image, flag)

BGR->Gray: flag is cv2.COLOR_BGR2GRAY

BGR->HSV: flag is cv2.COLOR_BGR2HSV

Value range of HSV color space in OpenCV:

H [0, 179] S [0, 255] V [0, 255]

The following figure shows the value range of common colors:

Based on the above range, our goal is to identify whether it is the color range we set, and replace this color with white first, replace the non-this color with black, and finally replace the white part with the original image.

2.3. Experimental results

Source code path:

/home/pi/project_demo/07.AI_Visual_Recognition/02.Color_Recog/02_color_detection.ipynb

This is the effect of using the default HSV value to recognize red. It can be seen that the recognition effect may not be ideal, and your own hands may be mistakenly recognized. This is because different settings of different cameras and camera images will result in different video screen colors, which may be brighter, darker, greener, etc., resulting in the default HSV value recognition not being very accurate.