700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 被逼无奈的树莓派传输文件

被逼无奈的树莓派传输文件

时间:2023-01-15 22:08:21

相关推荐

被逼无奈的树莓派传输文件

import timeimport cv2import sysimport osimport queueimport PWMServofrom camera import *from get_data import *from cv_ImgAddText import *from cv_funtion import *import mjpg_server as mjpgmode = -1 # 模式切换标识emoji = 0 #默认表情running = 1 #运行标志标志# 人脸检测发送图片的信息send_email = ''#发送邮箱recv_email = ''#接收邮箱passwd = ''#授权码def get_email_data():global send_email, passwd, recv_emailsend_email, passwd, recv_email = read_data()cap = '' #cv2摄像头对象def camera_open():global cap, modetry:if cap != '':try:cap.release()except Exception as e:print(e)cap = cv2.VideoCapture(-1)cap.set(12, 45)time.sleep(0.01)mode = 0except BaseException as e:print('open camera error:',e)def camera_close():global cap, modetry:mode = -1time.sleep(0.1)cap.release()time.sleep(0.01)except BaseException as e:print('close camera error:', e)last_mode = 0frame_copy = image = Nonedef connectInit():global modeframe_copy = 0setServoInit()if mode == 1 or mode == 0:PWMServo.setServo(1, 1500, 500)PWMServo.setServo(2, 1500, 500)elif mode == 4:PWMServo.setServo(1, 1200, 500)PWMServo.setServo(2, 1500, 500)else:passtime.sleep(0.55)def disconnectInit():setServoInit()passtime.sleep(0.55)# 示玩法的字体参数text_x = 20 # 位置的xtext_y = 20 # 位置的ytextsize = 30 # 大小textcolor = (255, 0, 0) # 颜色#调用颜色追踪def calling_color_track(isRunning, org):ret = Noneif isRunning: #据序号转为颜色名称的字符串if isRunning == 1:color = 'red'elif running == 2:color = 'green'elif running == 3:color = 'blue'return cv_color_track(org, 320, 240, target_color = color)else:return org#调用人脸检测last_face_reg_time = 0 #最后一次检测到邮件发送结果时间戳last_face_reg_result = 'detect_ok' #做后一次检测到人脸的邮件发送结果def calling_face_reg(isRunning, org):global send_email, passwd, recv_emailglobal last_face_reg_time, last_face_reg_resultret = orgt = time.time()result = 'detect_ok'if running == 3:if (t - last_face_reg_time) < 3: #两次间隔小于3秒,显示上次结果img_tmp, result= detectFaceOpenCVDnn(org , '', '', '')result = last_face_reg_resultelse: img_tmp, result= detectFaceOpenCVDnn(org , send_email, passwd, recv_email)last_face_reg_result = resultif result != 'detect_ok':last_face_reg_time = time.time()if result == 'send_fail':ret = cv2ImgAddText(img_tmp, "发送图片失败,请检查填写信息是否正确,\n或者网络是否连接",10, 200, textColor=textcolor, textSize=textsize)elif result == 'send_ok':ret = cv2ImgAddText(img_tmp, "发送成功,可在邮箱查看结果",10, 200, textColor=textcolor, textSize=textsize)elif result == 'detect_ok':passelse:ret = cv2ImgAddText(img_tmp, result, 10, 200, textColor=textcolor, textSize=textsize)elif running == 2 or running == 1:ret, result= detectFaceOpenCVDnn(frame_copy , '', '', '')last_face_reg_time = 0else:passreturn ret# 玩法切换def switch_play():global capglobal mode, image, frame_copy, debugglobal emoji, runningwhile True:if mode != -1:if frame_copy is not None: #获取到图片if mode == 1: #mode 1 颜色追踪image = calling_color_track(running, frame_copy)elif mode == 2:#mode 2 人脸识别image = calling_face_reg(running, frame_copy)elif mode == 3:#mode 3 移动检测image = moving_objiect_track(frame_copy, 320, 240) if running else frame_copyelif mode == 4:#mode 4 人脸追踪、眼镜表情image = cv_emoji(frame_copy, running, emoji, 160, 120, 640, 480)elif mode == 5: #mode 5 二维码识别Frame, result = cv_qccode(frame_copy) if running else (frame_copy, '')Frame = cv2.rectangle(Frame, (0, 480 -40), (640 -1, 480 -1), (255, 255, 255), -1)image = cv2ImgAddText(Frame, "二维码内容:" + result, 5, 480 - 35, textColor=textcolor, textSize=textsize)elif mode == 6:#mode 6 手指识别if running:binary = image_process(frame_copy, 320, 240)#处理图像image, hand_num = get_hand_number(binary, 320, 240, frame_copy)#获取手指个数cv2.putText(image, "Finger(s): " + str(hand_num), (10, image.shape[0] - 13), cv2.FONT_HERSHEY_SIMPLEX, 1.0, (0, 0, 255), 2)else:image = frame_copyelse:image = frame_copyframe_copy = Nonetime.sleep(0.01)else:time.sleep(0.01)debug = Falsedef camera_task():global image, frame_copy, debug, mode, cap, ps_countwhile True:if mode != -1:try:ret, orgframe = cap.read()if ret:frame_flip = cv2.flip(orgframe, 1)frame_copy = frame_flipif debug:img_tmp = image if image is not None else frame_flipcv2.imshow('image',img_tmp)cv2.waitKey(1)else:img_tmp = image if image is not None else frame_fliptry:mjpg.img_show = img_tmpexcept:passtime.sleep(0.03)else:cap = cv2.VideoCapture(-1)time.sleep(0.01)except BaseException as e:print('主程序出错', e)else:time.sleep(0.01)#mjpg流服务器if __name__ != '__main__':threading.Thread(target = mjpg.create_mjpg_server, args=(), daemon=True).start()#图像处理线程threading.Thread(target=switch_play, daemon=True).start()threading.Thread(target=camera_task, daemon=True).start()if __name__ == '__main__':print('''*****************************************************************功能:所有玩法的集合,可通过不同指令进行调用******************************************************************----------------------------------------------------------Official website:http://www.lobot-/pc/index/indexOnline mall:https://lobot-/----------------------------------------------------------以下指令均需在LX终端使用,LX终端可通过ctrl+alt+t打开,或点击上栏的黑色LX终端图标。----------------------------------------------------------Usage:-0 | --启动遥控云台玩法-1 | --启动颜色跟踪玩法-2 | --启动人脸检测玩法-3 | --启动人脸追踪玩法-4 | --启动移动检测玩法-5 | --启动二维码识别玩法-6 | --启动手指识别玩法----------------------------------------------------------Example #1:显示图像,将识别到的人脸框起来python3 Transfer_Play.py -3----------------------------------------------------------Version: --V2.0 /05/04----------------------------------------------------------Tips:* 按下Ctrl+C可关闭此次程序运行,若失败请多次尝试!----------------------------------------------------------''')# 人脸检测发送图片:发送邮箱,接收邮箱,授权码send_email = ''recv_email = ''passwd = ''if len(sys.argv) > 1:camera_open()tmp_mode = 0try:tmp_mode = int(sys.argv[1][1:])if tmp_mode == 4:mode = 3elif tmp_mode == 3:mode = 4else:mode = tmp_modeif mode == 0:PWMServo.setServo(1, 1500, 1000)PWMServo.setServo(2, 1500, 1000)except:print('传入参数格式错误')sys.exit()if mode < 0 or mode > 6:print('未启动任何玩法')else:print('当前启动玩法:', str(tmp_mode))emoji = 1running = 1debug = True else:print('请添加需要运行的玩法参数')interrupt = Falsedef signal_handle(signal, frame): global interruptinterrupt = Trueprint('程序终止')while True:if interrupt:breakelse:time.sleep(1)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。