【opencv】使用Opencv进行颜色识别

使用场景:已有标注好检测框的车牌图像进行再次简单分类,用于继续细分车牌类型

例如:

蓝色车牌、黄色车牌、黑色车牌、白色车牌、绿色车牌

实测效果良好,除非图像场景复杂,则可能需要后期筛选调整。受颜色范围影响,但已经做了一定程度的图像增强。

#参考:https://blog.csdn.net/wanggsx918/article/details/23272669
#参考:https://blog.csdn.net/weixin_39731782/article/details/110891198
#参考: https://blog.csdn.net/wanggsx918/article/details/23272669
import numpy as np
import cv2

color_dict = dict()
lower_red_hsv = np.array([0, 43, 46])
upper_red_hsv = np.array([10, 255, 255])
lower_red2_hsv = np.array([10, 43, 46])
upper_red2_hsv = np.array([180, 255, 255])

lower_black_hsv = np.array([0, 0, 0])
upper_black_hsv = np.array([180, 255, 46])
lower_green_hsv = np.array([35, 43, 46])
upper_green_hsv = np.array([77, 255, 255])

lower_white_hsv = np.array([0, 0, 221])
upper_white_hsv = np.array([180, 30, 255])

lower_yellow_hsv = np.array([26, 43, 46])
upper_yellow_hsv = np.array([34, 255, 255])
lower_orange_hsv = np.array([11, 43, 46])
upper_orange_hsv = np.array([25, 255, 255])
lower_gray_hsv = np.array([0, 0, 46])
upper_gray_hsv = np.array([180, 43, 220])


lower_blue_hsv = np.array([100, 43, 46])
upper_blue_hsv = np.array([124, 255, 255])


# color_dict['orange'] = [lower_orange_hsv, upper_orange_hsv]
# color_dict['red'] = [lower_red_hsv, upper_red_hsv]
# color_dict['red2'] = [lower_red2_hsv, upper_red2_hsv]

color_dict['blue'] = [lower_blue_hsv, upper_blue_hsv]
color_dict['yellow'] = [lower_yellow_hsv, upper_yellow_hsv]
color_dict['green'] = [lower_green_hsv, upper_green_hsv]
color_dict['black'] = [lower_black_hsv, upper_black_hsv]
color_dict['white'] = [lower_white_hsv, upper_white_hsv]



#主程序开始

frame=cv2.imread("20220812161945.png")

#图像增强
if len(frame.shape) == 3:
    frame = 255*np.power(frame/255,0.5)
    frame = np.around(frame)
    frame[frame>255] = 255
    frame = frame.astype(np.uint8)

cv2.imshow("fff",frame)
cv2.waitKey()
img_hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)



mask_blue = cv2.inRange(img_hsv, color_dict['blue'][0], color_dict['blue'][1]) # 获得蓝色部分掩膜

mask_yellow = cv2.inRange(img_hsv, color_dict['yellow'][0],  color_dict['yellow'][1]) # 

mask_green = cv2.inRange(img_hsv, color_dict['green'][0],  color_dict['green'][1]) # 

mask_black = cv2.inRange(img_hsv, color_dict['black'][0],  color_dict['black'][1]) # 

mask_white = cv2.inRange(img_hsv, color_dict['white'][0],  color_dict['white'][1]) # 


blue_sum = (mask_blue == 255 ).sum()
yellow_sum = (mask_yellow == 255).sum()
green_sum = (mask_green == 255).sum()
black_sum = (mask_black == 255).sum()
white_sum = (mask_white == 255).sum()

sum_list = np.array([blue_sum,yellow_sum,green_sum,black_sum,white_sum])
print(sum_list)

res_index = np.argmax(sum_list)
plate_type = ["blue","yellow","green","black","white"]

print("res is ",plate_type[res_index])

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值