上传文件至 /
This commit is contained in:
		
							parent
							
								
									7411844856
								
							
						
					
					
						commit
						c3c227f130
					
				
							
								
								
									
										91
									
								
								detect_tools.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										91
									
								
								detect_tools.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,91 @@ | |||||||
|  | # encoding:utf-8 | ||||||
|  | import cv2 | ||||||
|  | from PyQt5.QtGui import QPixmap, QImage | ||||||
|  | import numpy as np | ||||||
|  | from PIL import Image,ImageDraw,ImageFont | ||||||
|  | import csv | ||||||
|  | import os | ||||||
|  | 
 | ||||||
|  | # fontC = ImageFont.truetype("Font/platech.ttf", 20, 0) | ||||||
|  | 
 | ||||||
|  | # 绘图展示 | ||||||
|  | def cv_show(name,img): | ||||||
|  | 	cv2.imshow(name, img) | ||||||
|  | 	cv2.waitKey(0) | ||||||
|  | 	cv2.destroyAllWindows() | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | def drawRectBox(image, rect, addText, fontC, color=(0,0,255)): | ||||||
|  |     """ | ||||||
|  |     绘制矩形框与结果 | ||||||
|  |     :param image: 原始图像 | ||||||
|  |     :param rect: 矩形框坐标, int类型 | ||||||
|  |     :param addText: 类别名称 | ||||||
|  |     :param fontC: 字体 | ||||||
|  |     :return: | ||||||
|  |     """ | ||||||
|  |     # 绘制位置方框 | ||||||
|  |     cv2.rectangle(image, (rect[0], rect[1]), | ||||||
|  |                  (rect[2], rect[3]), | ||||||
|  |                  color, 2) | ||||||
|  | 
 | ||||||
|  |     # 绘制字体背景框 | ||||||
|  |     # cv2.rectangle(image, (rect[0] - 1, rect[1] - 50), (rect[2], rect[1]), color, -1, cv2.LINE_AA) | ||||||
|  |     # 图片 添加的文字 位置 字体 字体大小 字体颜色 字体粗细.无法正常显示中文 | ||||||
|  |     # cv2.putText(image, addText, (int(rect[0])+2, int(rect[1])-3), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (255, 255, 255), 2) | ||||||
|  | 
 | ||||||
|  |     # 可以显示中文 | ||||||
|  |     # 字体自适应大小 | ||||||
|  |     font_size = int((rect[3]-rect[1])/1.5) | ||||||
|  |     fontC = ImageFont.truetype("Fonts/msyhbd.ttc", font_size, 0) | ||||||
|  |     img = Image.fromarray(image) | ||||||
|  |     draw = ImageDraw.Draw(img) | ||||||
|  |     draw.text((rect[0]+2, rect[1]-font_size), addText, (0, 0, 255), font=fontC) | ||||||
|  |     imagex = np.array(img) | ||||||
|  |     return imagex | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | def img_cvread(path): | ||||||
|  |     # 读取含中文名的图片文件 | ||||||
|  |     # img = cv2.imread(path) | ||||||
|  |     img = cv2.imdecode(np.fromfile(path, dtype=np.uint8), cv2.IMREAD_COLOR) | ||||||
|  |     return img | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | def draw_boxes(img, boxes): | ||||||
|  |     for each in boxes: | ||||||
|  |         x1 = each[0] | ||||||
|  |         y1 = each[1] | ||||||
|  |         x2 = each[2] | ||||||
|  |         y2 = each[3] | ||||||
|  |         cv2.rectangle(img, (x1, y1), (x2, y2), (0, 255, 0), 2) | ||||||
|  |     return img | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | def cvimg_to_qpiximg(cvimg): | ||||||
|  |     height, width, depth = cvimg.shape | ||||||
|  |     cvimg = cv2.cvtColor(cvimg, cv2.COLOR_BGR2RGB) | ||||||
|  |     qimg = QImage(cvimg.data, width, height, width * depth, QImage.Format_RGB888) | ||||||
|  |     qpix_img = QPixmap(qimg) | ||||||
|  |     return qpix_img | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # 图片上显示中文 | ||||||
|  | def cv2AddChineseText(img, text, position, textColor=(0, 255, 0), textSize=50): | ||||||
|  |     if (isinstance(img, np.ndarray)):  # 判断是否OpenCV图片类型 | ||||||
|  |         img = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB)) | ||||||
|  |     # 创建一个可以在给定图像上绘图的对象 | ||||||
|  |     draw = ImageDraw.Draw(img) | ||||||
|  |     # 字体的格式 | ||||||
|  |     fontStyle = ImageFont.truetype( | ||||||
|  |         "simsun.ttc", textSize, encoding="utf-8") | ||||||
|  |     # 绘制文本 | ||||||
|  |     draw.text(position, text, textColor, font=fontStyle) | ||||||
|  |     # 转换回OpenCV格式 | ||||||
|  |     return cv2.cvtColor(np.asarray(img), cv2.COLOR_RGB2BGR) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user