import time
import cv2
import sys
import os
import queue
import PWMServo
from 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 = 0
frame_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 # 位置的x
text_y = 20 # 位置的y
textsize = 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 = False
def 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-robot.com/pc/index/indexOnline mall:https://lobot-zone.taobao.com/----------------------------------------------------------以下指令均需在LX终端使用,LX终端可通过ctrl+alt+t打开,或点击上栏的黑色LX终端图标。----------------------------------------------------------Usage:-0 | --启动遥控云台玩法-1 | --启动颜色跟踪玩法-2 | --启动人脸检测玩法-3 | --启动人脸追踪玩法-4 | --启动移动检测玩法-5 | --启动二维码识别玩法-6 | --启动手指识别玩法----------------------------------------------------------Example #1:显示图像,将识别到的人脸框起来python3 Transfer_Play.py -3----------------------------------------------------------Version: --V2.0  2020/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)

被逼无奈的树莓派传输文件相关推荐

  1. 树莓派与windows之间传输文件

    "学习或者了解人工智能小伙伴福利来了,前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家." 想了解或者学习人工智能可以看一下,我觉得学习起来挺有趣的 ...

  2. 树莓派与win10主机传输文件方式(未完,占坑)

    目录 1. Samba共享服务 2. sftp服务 3. ftp图形化软件 - FileZilla 4. 蓝牙 5. http.server 1. Samba共享服务 前提:设备需要在同一局域网内,并 ...

  3. VScode远程免密连接树莓派设备,并使用可视化界面(xming)进行代码调试,远程传输文件

    (请一步一步来,大佬随意) 分为四大环节: 1.SSH篇 2.免密连接设置篇 3.文件传输篇 4.可视化界面的安装和使用 SSH篇: 一:本地电脑安装相应的软件 1.前期准备工作:安装好VScode软 ...

  4. 使用Xftp连接树莓派并传输文件

    把SD卡插在电脑上,在根目录(boot 中)新建"SSH"文件如下图所示: 配置完成后,将SD卡插入树莓派,启动树莓派,等待树莓派连接WIFI,然后对树莓派进行如下配置 注意:电脑 ...

  5. 树莓派学习——文件传输

    1: filezilla 软件 ,用FTP协议传输文件(简单上手快)     记得主机名称:sftp:// ip 转载于:https://www.cnblogs.com/Blog-c/p/760574 ...

  6. Linux使用ftp传输10g的文件,Ubuntu 16.04 安装ftp服务器传输文件

    最近在搞深度学习,老师比较宝贝他的服务器,要求我以后负责管理服务器.往后所有要使用服务器的人都必须向我申请账号,然后只允许客户端访问,使用文件传输软件传输文件.像我这样一个Linux菜逼,这种要求不是 ...

  7. linux telnet 传文件命令,telnet 传输文件

    用python创建个临时服务器,发送文件供telnet访问 import socket import base64 port = 10005 filename = 'libcrypto.so.1.0. ...

  8. 资深程序员被逼无奈出来摆摊了,快来捧个人场!

    资深程序员被逼无奈出来摆摊 产品介绍 软件技术规格 产品型号对照表 开始使用 1.接通电源.网络 2.登录设备 3.连接信号源 总结 大家好,现在程序员都要出来摆摊了,所以这几天我抓紧排练,先在公司演 ...

  9. Linux系统管理必备知识之利用ssh传输文件

    在使用SSH时候,有时我们需要传输文件,这就需要用到命令scp. 从服务器上下载文件 scp username@servername:/path/filename /local_dir(本地目录) e ...

最新文章

  1. layui停止更新_layui 关闭当前窗口,刷新父级页面
  2. 中缀表达式生成二叉树
  3. 如何集成和使用EclEmma插件来获得良好的Junit覆盖率
  4. activiti脚本任务_Activiti中的高级脚本:自定义配置注入
  5. vue2.x vant2.x H5 移动端脚手架
  6. leetcodeT14-最长公共前缀(两种解法+图解)
  7. 无心剑随感《爱心教育》
  8. 【集合】Java 集合的ConcurrentModificationException
  9. 初识JS-基础中的基础
  10. vsftpd创建本地yum仓库如何放在有账户密码验证上
  11. Scipy教程 - 线性代数库scipy.linalg
  12. 模式识别与机器学习 (Pattern Recognization and Maching Learning)(PRML) 总结
  13. 期刊论文公式编号、居中技巧
  14. Python 第五篇 自制数字贺卡
  15. BZOJ 5477: 星际穿越
  16. 淘客联盟系统维护光盘2008新春大礼包
  17. 网络架构及其演变过程
  18. 头条流量android,今日头条的免流量看视频是怎么操作的?
  19. 搜索局域网内电脑共享文件的方法
  20. 数据资产盘点实践:智能对标

热门文章

  1. input标签是什么?input标签属性有哪些
  2. 用代码道歉java_c语言道歉小程序
  3. Docker:小白之路 一plus (拉取镜像加速篇)
  4. 数据错误循环冗余检查是什么意思_“DCS系统组态”是什么意思?其步骤方法又有哪些?...
  5. Apache孵化项目
  6. 红米note11参数配置 红米note11值得买吗
  7. C/C++游戏开发(easyx框架)及时类——极速赛车
  8. AI 落后要挨打的苹果,5 年疯狂收购 25 家人工智能公司!
  9. csol什么时间服务器维护,01月21日服务器例行维护公告发布时间:2020-01-20
  10. 云计算机能不能玩游戏,云电脑!让低配电脑也能玩儿大型游戏!