OpenCV(Python)学习之识别图片特定颜色

说明

    根据官方文档学习使用cv2.cvtColor()、cv2.inRange()和cv2.bitwise_and()方法。通过使用cv2.cvtColor()将图片转换为hsv颜色空间形式的图片,再通过cv2.inRange()得到mask画面,再用cv2.bitwise_and()方法将原图与mask图片融合,最终得到需要找到特定颜色的区域。代码如下

import cv2

import numpy as np

import matplotlib.pyplot as plt

#read image

img = cv2.imread('Pic.jpg')

#convert BGR to HSV

hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

#defined the range of a color

lower_color = np.array([17,100,100])

upper_color = np.array([23,230,255])

#get mask

mask = cv2.inRange(hsv, lower_color, upper_color)

#get result

res = cv2.bitwise_and(img, img, mask= mask)

#Because cv2's color system is BGR, but matplotlib's color system is RGB,

#must convert BGR to RGB

imgrgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

resrgb = cv2.cvtColor(res, cv2.COLOR_BGR2RGB)

img_data = [imgrgb, hsv, mask, resrgb]

titles = ['Original image', 'HSV image', 'Mask image', 'Result image']

for i in range(4):

    plt.subplot(2,2,i+1)

    plt.imshow(img_data[i])

    plt.title(titles[i])

    plt.xticks([])

    plt.yticks([])

plt.show()

结果如下图:

找特定颜色的HSV值可通过如下方法:

color_value = np.uint([[[30,182,253]]])

color_hsv_value = cv2.cvtColor(color_value, cv2.COLOR_BGR2HSV)

print(color_hsv_value)

        通过上述三行命令可以得出来想要找出颜色的hsv值,然后在根据想要的效果确定范围值即可。

        写这些东西是发现自己在学习的时候容易忘记,所以想通过写下来能够增加熟练度。

你可能感兴趣的:(OpenCV(Python)学习之识别图片特定颜色)