上传文件至 /
This commit is contained in:
		
							parent
							
								
									c57015a166
								
							
						
					
					
						commit
						7411844856
					
				
							
								
								
									
										76
									
								
								detect_license_plate.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										76
									
								
								detect_license_plate.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,76 @@ | ||||
| # coding:utf-8 | ||||
| from ultralytics import YOLO | ||||
| import cv2 | ||||
| import detect_tools as tools | ||||
| from PIL import ImageFont | ||||
| from paddleocr import PaddleOCR | ||||
| import matplotlib.pyplot as plt | ||||
| import os | ||||
| 
 | ||||
| def get_license_result(ocr, image): | ||||
|     """ | ||||
|     image:输入的车牌截取照片 | ||||
|     输出,车牌号与置信度 | ||||
|     """ | ||||
|     result = ocr.ocr(image, cls=True)[0] | ||||
|     if result: | ||||
|         license_name, conf = result[0][1] | ||||
|         if '·' in license_name: | ||||
|             license_name = license_name.replace('·', '') | ||||
|         return license_name, conf | ||||
|     else: | ||||
|         return None, None | ||||
| 
 | ||||
| # 获取图片地址 | ||||
| img_path = "images" | ||||
| files = os.listdir(img_path) | ||||
| s = [] | ||||
| for file in files: | ||||
|     temp = img_path+"/"+file | ||||
|     s.append(temp) | ||||
| fontC = ImageFont.truetype("Fonts/msyhbd.ttc", 50, 0, encoding="utf-8") | ||||
| 
 | ||||
| # 加载ocr模型 | ||||
| cls_model_dir = 'paddleModels/whl/cls/ch_ppocr_mobile_v2.0_cls_infer' | ||||
| rec_model_dir = 'paddleModels/whl/rec/ch/ch_PP-OCRv4_rec_infer' | ||||
| ocr = PaddleOCR(use_angle_cls=False, lang="ch", det=False, cls_model_dir=cls_model_dir, rec_model_dir=rec_model_dir) | ||||
| 
 | ||||
| # 所需加载的模型目录 | ||||
| path = 'runs/detect/train/weights/best.pt' | ||||
| # 加载预训练模型 | ||||
| # conf	0.25	object confidence threshold for detection | ||||
| # iou	0.7	int.ersection over union (IoU) threshold for NMS | ||||
| model = YOLO(path, task='detect') | ||||
| # model = YOLO(path, task='detect',conf=0.5) | ||||
| 
 | ||||
| #检测图片 | ||||
| i = 0 | ||||
| for now_img in s: | ||||
|     now_img = tools.img_cvread(now_img) | ||||
|     results = model(now_img)[0] | ||||
|     location_list = results.boxes.xyxy.tolist() | ||||
|     if len(location_list) >= 1: | ||||
|         location_list = [list(map(int, e)) for e in location_list] | ||||
|         # 截取每个车牌区域的照片 | ||||
|         license_imgs = [] | ||||
|         for each in location_list: | ||||
|             x1, y1, x2, y2 = each | ||||
|             cropImg = now_img[y1:y2, x1:x2] | ||||
|             license_imgs.append(cropImg) | ||||
|         # 车牌识别结果 | ||||
|         lisence_res = [] | ||||
|         conf_list = [] | ||||
|         for each in license_imgs: | ||||
|             license_num, conf = get_license_result(ocr, each) | ||||
|             if license_num: | ||||
|                 lisence_res.append(license_num) | ||||
|                 conf_list.append(conf) | ||||
|             else: | ||||
|                 lisence_res.append('无法识别') | ||||
|                 conf_list.append(0) | ||||
|         for text, box in zip(lisence_res, location_list): | ||||
|             now_img = tools.drawRectBox(now_img, box, text, fontC) | ||||
|             now_img = cv2.resize(now_img, dsize=None, fx=0.5, fy=0.5, interpolation=cv2.INTER_LINEAR) | ||||
|             # cv2.imshow("YOLOv8 Detection", now_img) | ||||
|             cv2.imwrite(f"./result/{i}.jpg", now_img) | ||||
|             i += 1 | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user