41 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
| 
 | |
| import importlib
 | |
| from django.conf import settings
 | |
| import logging
 | |
| myLogger = logging.getLogger('log')
 | |
| 
 | |
| 
 | |
| algo_dict = {
 | |
|     "helmet": "apps.ai.helmet.algo.analyse"
 | |
| }
 | |
| 
 | |
| 
 | |
| def ai_analyse(codes: list, global_img: str, face_img: str = None):
 | |
|     """多线程进行算法分析图片
 | |
| 
 | |
|     Args:
 | |
|         codes: 算法列表
 | |
|         global_img (str): 全景图片地址
 | |
|         face_img (str): 人脸图片地址
 | |
|     """
 | |
|     results = {}
 | |
|     for i in codes:
 | |
|         if i in algo_dict:  # 如果算法支持
 | |
|             module, func = algo_dict[i].rsplit(".", 1)
 | |
|             m = importlib.import_module(module)
 | |
|             f = getattr(m, func)
 | |
|             try:
 | |
|                 is_happend, res = False, None
 | |
|                 if i == 'helmet':  # 如果是安全帽识别
 | |
|                     if face_img:
 | |
|                         is_happend, res = f(ip=settings.AI_IP, pic_url=face_img)
 | |
|                     else:
 | |
|                         is_happend, res = f(ip=settings.AI_IP, pic_url=global_img)
 | |
|                 else:
 | |
|                     is_happend, res = f(ip=settings.AI_IP, pic_url=global_img)
 | |
|                 if is_happend:
 | |
|                     results.update({i: res})
 | |
|             except Exception:
 | |
|                 myLogger.error('算法处理错误', exc_info=True)
 | |
|     return results
 |