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值,然后在根据想要的效果确定范围值即可。

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容