算法img bug

This commit is contained in:
曹前明 2022-10-27 21:37:50 +08:00
parent 22412d0be1
commit 1dba032737
1 changed files with 13 additions and 10 deletions

View File

@ -17,7 +17,7 @@ algo_dict = {
} }
def ai_analyse(codes: list, global_img: str, face_img: str = None, is_dahua_pic: bool = True): def ai_analyse(codes: list, global_img: str, face_img: str = '', is_dahua_pic: bool = True):
"""算法分析图片 """算法分析图片
Args: Args:
@ -26,6 +26,8 @@ def ai_analyse(codes: list, global_img: str, face_img: str = None, is_dahua_pic:
face_img (str): 人脸图片url地址 face_img (str): 人脸图片url地址
""" """
results = {} # dict key: 触发的事件标识字符 value: 多个矩形框坐标列表; 有两个图片key值 results = {} # dict key: 触发的事件标识字符 value: 多个矩形框坐标列表; 有两个图片key值
global_img_path = ''
face_img_path = ''
if is_dahua_pic: # 先保存到本地/主要是现在算法必须得用可访问的远程地址 if is_dahua_pic: # 先保存到本地/主要是现在算法必须得用可访问的远程地址
from apps.ecm.service import save_dahua_pic from apps.ecm.service import save_dahua_pic
global_img_path = save_dahua_pic(global_img) global_img_path = save_dahua_pic(global_img)
@ -55,7 +57,8 @@ def ai_analyse(codes: list, global_img: str, face_img: str = None, is_dahua_pic:
for x in res.FireinfoList: for x in res.FireinfoList:
if x.fire == 3 and 'qiping' in codes: # 气瓶倾倒 if x.fire == 3 and 'qiping' in codes: # 气瓶倾倒
qiping_qd = True qiping_qd = True
rectangle_dict['qiping'].append([(x.coord.uleft.x, x.coord.uleft.y), (x.coord.lright.x, x.coord.lright.y)]) # 加入矩形框 rectangle_dict['qiping'].append(
[(x.coord.uleft.x, x.coord.uleft.y), (x.coord.lright.x, x.coord.lright.y)]) # 加入矩形框
if x.fire == 0: if x.fire == 0:
has_fire = True has_fire = True
if x.fire == 2: if x.fire == 2:
@ -66,14 +69,14 @@ def ai_analyse(codes: list, global_img: str, face_img: str = None, is_dahua_pic:
results.update({i: rectangle_dict.get(i, [])}) results.update({i: rectangle_dict.get(i, [])})
except Exception: except Exception:
myLogger.error('算法处理错误', exc_info=True) myLogger.error('算法处理错误', exc_info=True)
if is_dahua_pic: if global_img_path:
os.remove(settings.BASE_DIR + global_img_path) # 删除临时图片 os.remove(settings.BASE_DIR + global_img_path) # 删除临时图片
if face_img: if face_img_path:
os.remove(settings.BASE_DIR + face_img_path) os.remove(settings.BASE_DIR + face_img_path)
return results return results
def ai_analyse_2(codes: list, global_img: str, face_img: str = None, is_dahua_pic: bool = True): def ai_analyse_2(codes: list, global_img: str, face_img: str = '', is_dahua_pic: bool = True):
"""算法分析图片后保存并返回相对地址 """算法分析图片后保存并返回相对地址
Args: Args:
@ -82,7 +85,7 @@ def ai_analyse_2(codes: list, global_img: str, face_img: str = None, is_dahua_pi
face_img (str): 人脸图片url地址 face_img (str): 人脸图片url地址
""" """
results = ai_analyse(codes, global_img, face_img, is_dahua_pic) results = ai_analyse(codes, global_img, face_img, is_dahua_pic)
if results: # 如果触发事件先保存下来 if results: # 如果触发事件先保存下来
from apps.ecm.service import save_dahua_pic from apps.ecm.service import save_dahua_pic
global_img_path = save_dahua_pic(global_img) global_img_path = save_dahua_pic(global_img)
global_img_local = settings.BASE_DIR + global_img_path global_img_local = settings.BASE_DIR + global_img_path
@ -90,6 +93,7 @@ def ai_analyse_2(codes: list, global_img: str, face_img: str = None, is_dahua_pi
results.update({'global_img': global_img_path}) results.update({'global_img': global_img_path})
return results return results
def draw(path, results): def draw(path, results):
rects = [] rects = []
for i in results: for i in results:
@ -100,6 +104,5 @@ def draw(path, results):
for i in results: for i in results:
for m in results[i]: for m in results[i]:
cv2.rectangle(img, results[i][m][0], results[i][m][1], (0, 255, 0), 4) cv2.rectangle(img, results[i][m][0], results[i][m][1], (0, 255, 0), 4)
cv2.putText(img, i, results[i][m][0], font, 2, (0,0,255), 1) cv2.putText(img, i, results[i][m][0], font, 2, (0, 0, 255), 1)
cv2.imwrite(path, img) cv2.imwrite(path, img)