使用场景:已有标注好检测框的车牌图像进行再次简单分类,用于继续细分车牌类型
例如:
蓝色车牌、黄色车牌、黑色车牌、白色车牌、绿色车牌
实测效果良好,除非图像场景复杂,则可能需要后期筛选调整。受颜色范围影响,但已经做了一定程度的图像增强。
#参考: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])