# -*- coding:utf-8 -*- import os import django import sys from qcloudsms_py import SmsSingleSender from qcloudsms_py.httpclient import HTTPError from qcloudsms_py import SmsMultiSender BASE_DIR = os.path.dirname(os.path.abspath(__file__)) # 定位到你的django根目录 sys.path.append(os.path.abspath(os.path.join(BASE_DIR, os.pardir))) os.environ.setdefault("DJANGO_SETTINGS_MODULE", "yfwlw_pro.settings") # project_name 项目名称 django.setup() import json from apps.AppInfoManage.models import Equip, Equip_type, MyUser, CBDphoto, CBDstatus, QXZdata, SCDstatus, CBDstatus, Equip_SimInfo, CBDdata, BZYphoto, RecentCBDdata,RecentSCDdata,\ Msg_Conf, Msg_Send, JKphoto, JKdata, JKtoken import re import datetime import time import random from apps.SimInfo.views import get_siminfo from apps.ReportManage.all_dict import insect_dict_new, transpont_equip_scd # from apps.ReportManage.tasks import test import shutil import requests import math from PIL import Image import argparse import cv2 from imutils import paths def mkdir(path): # 去除首位空格 path=path.strip() # 去除尾部 \ 符号 path=path.rstrip("\\") # 判断路径是否存在 # 存在 True # 不存在 False isExists=os.path.exists(path) # 判断结果 if not isExists: # 如果不存在则创建目录 # 创建目录操作函数 os.makedirs(path) print(path+' 创建成功') return True else: # 如果目录存在则不创建,并提示目录已存在 print(path+' 目录已存在') return False def variance_of_laplacian(image): # 拉普拉斯的方差 return cv2.Laplacian(image, cv2.CV_64F).var() def test(imei): time.sleep(20) nowtime = datetime.datetime.now().strftime('%Y%m%d') origin = sys.stdout f = open('../logs/'+"bzyphoto" + nowtime +'.txt','a') sys.stdout = f print('=================================================') print("<-----imei:\n" + imei + ';\n') print("Message:\n" + "http:bzyphoto" + "----->\n") print("%s"%datetime.datetime.now()) print('=================================================') pic_name = datetime.datetime.now().strftime('%Y%m') try: args = "../pyftp/ftp_file/bzy_test/" + imei cv_num_list = [] file_list1 = list(paths.list_images(args)) print("\n===========================") print("file_list1:",file_list1) print("type file_list1:",type(file_list1)) cv_num_list1 = [] for imagePath1 in file_list1[::]: # fm = get_value(imagePath) # 孢子仪图片过小删除 if os.path.getsize(imagePath1) <= 10: file_list1.remove(imagePath1) img1 = cv2.imread(imagePath1) img1 = cv2.resize(img1, (800, 600)) gray = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY) # 创建SIFT对象 sift = cv2.xfeatures2d.SIFT_create() keypoints, descriptor = sift.detectAndCompute(gray, None) img1 = cv2.drawKeypoints(image=img1, outImage=img1, keypoints=keypoints,flags=cv2.DRAW_MATCHES_FLAGS_DEFAULT, color=(0, 0, 255)) fm1 = len(keypoints) cv_num_list1.append(fm1) # 打印清晰度值: # print("fm1",fm1) # # 打印文件路径 # print("imagePath1",imagePath1) file_cv_tuple1 = tuple(zip(cv_num_list1,file_list1)) print("file_cv_tuple1:\n",file_cv_tuple1) print("=========================================/n") file_cv_tuple_list1 = list(file_cv_tuple1) print("file_cv_tuple_list1:\n",file_cv_tuple_list1) print("*****************************************/n") # 按照清晰度排序:, reverse=True降序 result1 = sorted(file_cv_tuple_list1, key=lambda s: s[0],reverse=True) print("result1:\n",result1) # 切片取清晰度最高的前五张图片: result1_5 = result1[0:3] # result5 = result[0:1] print("result1_5:\n",result1_5) pic_name = datetime.datetime.now().strftime('%Y%m') # 定义要创建的目录: mkpath="../pyftp/ftp_file/bzy_photo/" + imei + "/" + pic_name # 调用函数,创建目录: mkdir(mkpath) for i in result1_5: # for i in result5: #i值:(137.06453470539032, 'images\\192.168.2.64_01_20190802095315882_ALARM_INPUT.jpg') print("file path:",i[1]) #复制文件: shutil.copy(i[1],mkpath) # os.system("rm ./pyftp/ftp_file/bzy_test/%s/*.jpg -rf"%imei) os.system("mv ../pyftp/ftp_file/bzy_test/%s ../pyftp/ftp_file/bzy_test/%s_%s"%(imei,imei,datetime.datetime.now().strftime("%Y%m%d%H%M%S"))) print("-----------------image move success----------------------") except Exception as a: print('=================================================') print("<-----imei:\n" + imei + ';\n') print("Message:\n" + "http:bzyphoto" + "----->\n") print("%s"%datetime.datetime.now()) print("==========%s========"%a) print("-----------------image move default----------------------") try: # equip = Equip.objects.get(equip_id=imei) file_dir="../pyftp/ftp_file/bzy_photo/" + imei + "/" + pic_name for root, dirs, files in os.walk(file_dir): print("当前目录为=========>>",root) #当前目录路径 print("当前子目录为=========>>",dirs) #当前路径下所有子目录 print("当前目录文件为=========>>",files) #当前路径下所有非目录子文件 for i in files: photo_addr = file_dir + "/" + i photo_addr = photo_addr.replace("../","") print("文件夹图片路径===========》》",photo_addr) # if BZYphoto.objects.filter(addr=photo_addr).exists(): # print("照片存在") # else: # bzys = BZYphoto.objects.create(equip_id=equip, addr=photo_addr) # print("照片不存在") # if equip.ftp_addr: # bzy_imgs = "http://www.yfzhwlw.com/bzy/" + bzys.addr # data = { # "Image":bzy_imgs, # "imei":bzys.equip_id.equip_id, # } # data = json.dumps(data) # headers = {"Content-Type": "application/json; charset=UTF-8", 'Connection': 'close'} # bzy_photo = requests.post(equip.ftp_addr,data=data,headers=headers,timeout=3) # print("转发成功") except Exception as e: print("错误信息为",e) print("-----图片入库失败") sys.stdout = origin f.close() return data = {} while True: nowtime = datetime.datetime.now().strftime('%Y%m%d') # origin = sys.stdout # f = open("bzyphoto_new" + nowtime +'.txt','a') # sys.stdout = f # print('=================================================') # print("Message:\n" + "http:bzyphoto" + "----->\n") print("%s"%datetime.datetime.now()) path = "/data/yfwlw/pyftp/ftp_file/bzy_test" # path = "/home/web/yfwlw/pyftp/ftp_file/bzy_test" dirs = os.walk(path) for root,dir1,files in dirs: for d in dir1: if '_' in d: continue print("continue",d) sum1 = 0 file_name = os.path.join(path,d) for root2, dir2, files2 in os.walk(file_name): n = len(dir2)+len(files2) sum1 = sum1 + n try: if sum1: print(sum1,"综合") if data[file_name] == sum1: imei = file_name.split("/")[-1] print("file_name",file_name.split("/")[-1]) print("<-----imei:\n" + imei + ';\n') r = test(imei) # os.rename(file_name, file_name + '_' + str(int(time.time()))) print("该次图片上传完毕,请进行筛选操作") except Exception as e: print("错误信息为",e) data[file_name] = sum1 break print("等待60s,再次巡查") # sys.stdout = origin # f.close() time.sleep(60)