43 lines
1.3 KiB
Python
43 lines
1.3 KiB
Python
|
|
import importlib
|
|
from django.conf import settings
|
|
import logging
|
|
myLogger = logging.getLogger('log')
|
|
|
|
|
|
algo_dict = {
|
|
"helmet": "apps.ai.client.helmet",
|
|
"helmet2": "apps.ai.client.helmet2",
|
|
"fire1": "apps.ai.client.fire1"
|
|
}
|
|
|
|
|
|
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 = getattr(m, 'helmet2')(ip=settings.AI_IP, pic_url=face_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
|