img_matrix = [] # 标题矩阵 title_matrix = [] # 对每一张图片进行处理 for path in img_path: img_list = [] title_list = [] img = cv2.imread(path) img_list.append(img) filename = filecm.short_name(path) title_list.append('原图-%s' % filename) # 灰度转换 gray = opencvcm.get_gray(img, tmp_path, filename, img_list, title_list) # 平滑转 blur = opencvcm.get_blur(gray, True, (3, 3), 5, tmp_path, filename, img_list, title_list) # 边缘检测 sobel = opencvcm.get_sobel(blur, 1, 0, 3, cv2.CV_8U, tmp_path, filename, img_list, title_list) # 二值化 thresh = opencvcm.get_thresh(sobel, 170, cv2.THRESH_BINARY, tmp_path, filename, img_list, title_list) # 边界 kernel_dilate = cv2.getStructuringElement(cv2.MORPH_RECT, (9, 7)) kernel_erode = cv2.getStructuringElement(cv2.MORPH_RECT, (9, 1)) edges = opencvcm.get_edges(thresh, 'DED-DE', kernel_dilate, kernel_erode, tmp_path, filename, img_list, title_list) # 查找车牌区域,指定最小面积,宽高比范围 rois = opencvcm.find_rois(edges, min_area=2000, min_wh_ratio=2, max_wh_ratio=5) img_plate = None
filecm.makedir(tmp_path) # KNN算法对象(初始化并训练好) knn = cvknncm.get_hand_digits_knn() # 载入测试图片 img_test = cv2.imread('./images/cv_img_number2_test.jpg') # 图片列表 img_list = [] # 标题列表 title_list = [] img_list.append(img_test) title_list.append('原图+结果') gray = opencvcm.get_gray(img_test, tmp_path, "", img_list, title_list) # 读取图片边界 edges = opencvcm.get_edges(gray, 'D-E', None, None, tmp_path, "", img_list, title_list) # 阈值处理 thresh = opencvcm.get_thresh(edges, 21, cv2.THRESH_BINARY, tmp_path, "", img_list, title_list) # 查找兴趣点区域 rois = opencvcm.find_rois(thresh) digits = [] id = 0 for roi in rois: (x, y, w, h) = roi id += 1 # 查询兴趣区域对应的数字 digit, th = cvknncm.find_hand_digit_knn(knn,