bzy_photo_new.py 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  1. # -*- coding:utf-8 -*-
  2. import os
  3. import django
  4. import sys
  5. from qcloudsms_py import SmsSingleSender
  6. from qcloudsms_py.httpclient import HTTPError
  7. from qcloudsms_py import SmsMultiSender
  8. BASE_DIR = os.path.dirname(os.path.abspath(__file__)) # 定位到你的django根目录
  9. sys.path.append(os.path.abspath(os.path.join(BASE_DIR, os.pardir)))
  10. os.environ.setdefault("DJANGO_SETTINGS_MODULE",
  11. "yfwlw_pro.settings") # project_name 项目名称
  12. django.setup()
  13. import json
  14. from apps.AppInfoManage.models import Equip, Equip_type, MyUser, CBDphoto, CBDstatus, QXZdata, SCDstatus, CBDstatus, Equip_SimInfo, CBDdata, BZYphoto, RecentCBDdata,RecentSCDdata,\
  15. Msg_Conf, Msg_Send, JKphoto, JKdata, JKtoken
  16. import re
  17. import datetime
  18. import time
  19. import random
  20. from apps.SimInfo.views import get_siminfo
  21. from apps.ReportManage.all_dict import insect_dict_new, transpont_equip_scd
  22. # from apps.ReportManage.tasks import test
  23. import shutil
  24. import requests
  25. import math
  26. from PIL import Image
  27. import argparse
  28. import cv2
  29. from imutils import paths
  30. def mkdir(path):
  31. # 去除首位空格
  32. path=path.strip()
  33. # 去除尾部 \ 符号
  34. path=path.rstrip("\\")
  35. # 判断路径是否存在
  36. # 存在 True
  37. # 不存在 False
  38. isExists=os.path.exists(path)
  39. # 判断结果
  40. if not isExists:
  41. # 如果不存在则创建目录
  42. # 创建目录操作函数
  43. os.makedirs(path)
  44. print(path+' 创建成功')
  45. return True
  46. else:
  47. # 如果目录存在则不创建,并提示目录已存在
  48. print(path+' 目录已存在')
  49. return False
  50. def variance_of_laplacian(image):
  51. # 拉普拉斯的方差
  52. return cv2.Laplacian(image, cv2.CV_64F).var()
  53. def test(imei):
  54. time.sleep(20)
  55. nowtime = datetime.datetime.now().strftime('%Y%m%d')
  56. origin = sys.stdout
  57. f = open('../logs/'+"bzyphoto" + nowtime +'.txt','a')
  58. sys.stdout = f
  59. print('=================================================')
  60. print("<-----imei:\n" + imei + ';\n')
  61. print("Message:\n" + "http:bzyphoto" + "----->\n")
  62. print("%s"%datetime.datetime.now())
  63. print('=================================================')
  64. pic_name = datetime.datetime.now().strftime('%Y%m')
  65. try:
  66. args = "../pyftp/ftp_file/bzy_test/" + imei
  67. cv_num_list = []
  68. file_list1 = list(paths.list_images(args))
  69. print("\n===========================")
  70. print("file_list1:",file_list1)
  71. print("type file_list1:",type(file_list1))
  72. cv_num_list1 = []
  73. for imagePath1 in file_list1[::]:
  74. # fm = get_value(imagePath)
  75. # 孢子仪图片过小删除
  76. if os.path.getsize(imagePath1) <= 10:
  77. file_list1.remove(imagePath1)
  78. img1 = cv2.imread(imagePath1)
  79. img1 = cv2.resize(img1, (800, 600))
  80. gray = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)
  81. # 创建SIFT对象
  82. sift = cv2.xfeatures2d.SIFT_create()
  83. keypoints, descriptor = sift.detectAndCompute(gray, None)
  84. img1 = cv2.drawKeypoints(image=img1, outImage=img1, keypoints=keypoints,flags=cv2.DRAW_MATCHES_FLAGS_DEFAULT, color=(0, 0, 255))
  85. fm1 = len(keypoints)
  86. cv_num_list1.append(fm1)
  87. # 打印清晰度值:
  88. # print("fm1",fm1)
  89. # # 打印文件路径
  90. # print("imagePath1",imagePath1)
  91. file_cv_tuple1 = tuple(zip(cv_num_list1,file_list1))
  92. print("file_cv_tuple1:\n",file_cv_tuple1)
  93. print("=========================================/n")
  94. file_cv_tuple_list1 = list(file_cv_tuple1)
  95. print("file_cv_tuple_list1:\n",file_cv_tuple_list1)
  96. print("*****************************************/n")
  97. # 按照清晰度排序:, reverse=True降序
  98. result1 = sorted(file_cv_tuple_list1, key=lambda s: s[0],reverse=True)
  99. print("result1:\n",result1)
  100. # 切片取清晰度最高的前五张图片:
  101. result1_5 = result1[0:3]
  102. # result5 = result[0:1]
  103. print("result1_5:\n",result1_5)
  104. pic_name = datetime.datetime.now().strftime('%Y%m')
  105. # 定义要创建的目录:
  106. mkpath="../pyftp/ftp_file/bzy_photo/" + imei + "/" + pic_name
  107. # 调用函数,创建目录:
  108. mkdir(mkpath)
  109. for i in result1_5:
  110. # for i in result5:
  111. #i值:(137.06453470539032, 'images\\192.168.2.64_01_20190802095315882_ALARM_INPUT.jpg')
  112. print("file path:",i[1])
  113. #复制文件:
  114. shutil.copy(i[1],mkpath)
  115. # os.system("rm ./pyftp/ftp_file/bzy_test/%s/*.jpg -rf"%imei)
  116. 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")))
  117. print("-----------------image move success----------------------")
  118. except Exception as a:
  119. print('=================================================')
  120. print("<-----imei:\n" + imei + ';\n')
  121. print("Message:\n" + "http:bzyphoto" + "----->\n")
  122. print("%s"%datetime.datetime.now())
  123. print("==========%s========"%a)
  124. print("-----------------image move default----------------------")
  125. try:
  126. equip = Equip.objects.get(equip_id=imei)
  127. file_dir="../pyftp/ftp_file/bzy_photo/" + imei + "/" + pic_name
  128. for root, dirs, files in os.walk(file_dir):
  129. print("当前目录为=========>>",root) #当前目录路径
  130. print("当前子目录为=========>>",dirs) #当前路径下所有子目录
  131. print("当前目录文件为=========>>",files) #当前路径下所有非目录子文件
  132. for i in files:
  133. photo_addr = file_dir + "/" + i
  134. photo_addr = photo_addr.replace("../","")
  135. print("文件夹图片路径===========》》",photo_addr)
  136. if BZYphoto.objects.filter(addr=photo_addr).exists():
  137. print("照片存在")
  138. else:
  139. bzys = BZYphoto.objects.create(equip_id=equip, addr=photo_addr)
  140. print("照片不存在")
  141. if equip.ftp_addr:
  142. bzy_imgs = "http://www.yfzhwlw.com/bzy/" + bzys.addr
  143. data = {
  144. "Image":bzy_imgs,
  145. "imei":bzys.equip_id.equip_id,
  146. }
  147. data = json.dumps(data)
  148. headers = {"Content-Type": "application/json; charset=UTF-8", 'Connection': 'close'}
  149. bzy_photo = requests.post(equip.ftp_addr,data=data,headers=headers,timeout=3)
  150. print("转发成功")
  151. except Exception as e:
  152. print("错误信息为",e)
  153. print("-----图片入库失败")
  154. sys.stdout = origin
  155. f.close()
  156. return
  157. data = {}
  158. while True:
  159. nowtime = datetime.datetime.now().strftime('%Y%m%d')
  160. # origin = sys.stdout
  161. # f = open("bzyphoto_new" + nowtime +'.txt','a')
  162. # sys.stdout = f
  163. # print('=================================================')
  164. # print("Message:\n" + "http:bzyphoto" + "----->\n")
  165. print("%s"%datetime.datetime.now())
  166. path = "/data/yfwlw/pyftp/ftp_file/bzy_test"
  167. # path = "/home/web/yfwlw/pyftp/ftp_file/bzy_test"
  168. dirs = os.walk(path)
  169. for root,dir1,files in dirs:
  170. for d in dir1:
  171. if '_' in d:
  172. continue
  173. print("continue",d)
  174. sum1 = 0
  175. file_name = os.path.join(path,d)
  176. for root2, dir2, files2 in os.walk(file_name):
  177. n = len(dir2)+len(files2)
  178. sum1 = sum1 + n
  179. try:
  180. if sum1:
  181. print(sum1,"综合")
  182. if data[file_name] == sum1:
  183. imei = file_name.split("/")[-1]
  184. print("file_name",file_name.split("/")[-1])
  185. print("<-----imei:\n" + imei + ';\n')
  186. r = test(imei)
  187. # os.rename(file_name, file_name + '_' + str(int(time.time())))
  188. print("该次图片上传完毕,请进行筛选操作")
  189. except Exception as e:
  190. print("错误信息为",e)
  191. data[file_name] = sum1
  192. break
  193. print("等待60s,再次巡查")
  194. # sys.stdout = origin
  195. # f.close()
  196. time.sleep(60)