当前位置 博文首页 > 启舰:反抗996!启舰肝了个监控老板人脸,自动切桌面程序

    启舰:反抗996!启舰肝了个监控老板人脸,自动切桌面程序

    作者:[db:作者] 时间:2021-06-11 12:36

    前两天我在逛全球最大同性社交网站github的时候,发现了一个古董级程序。这就是2017年一位日本小哥写的一个监控老板的摸鱼程序。

    程序非常简单,运行这个程序,就可以用摄像头监控老板,当发现老板以后,会自动切换桌面。

    以下视频为模拟,效果过于逼真,切勿模仿

    让老板每次看见你,都是满心的欢喜,源码都有,大家可以自己修改。

    后来发现,这个程序还上了各大新闻。

    一、程序的修改

    今天就给大家分享这段碉堡的程序。

    因为时间过于久远,很多函数都弃用了,我CherryPick这个程序以后,对其进行修复,现在已经可以正常运行了。

    配置和运行也是非常简单的,配置环境只需要运行以下几个指令:

    conda create -n venv python=3.5
    source activate venv
    conda install -c https://conda.anaconda.org/menpo opencv3
    conda install -c conda-forge tensorflow
    pip install -r requirements.txt

    在环境配置好以后,先训练老板的人脸:

    python boss_train.py

    然后就可以开始监控老板了:

    python camera_reader.py

    程序非常简单

    二、碎碎念——为什么非硕士毕业不要用Python找工作

    你没看错,这里用的是python语言来开发的。

    如果等下你决定研究它的源码的话,你也会发现源码不过500行。

    从这里也可以看出,我曾经写的一篇文章的意义《为什么我建议你学python,但不建议你用Python找工作?》

    Python太简单了,像这个人像识别的程序,我根本没有接触过,但也只是查了查所用到模块的API文档,就能对其修改,整个时长也只有周六一天。

    正所谓成也萧何,败也萧何。

    过于简单的API,就必然不会要求使用者对其内部原理的理解。

    像你使用一条语句就能实现训练老板人脸集合,那你知道具体是怎么训练的吗?

    单纯学会API的使用,对于Python而言,是没有任何竞争力的,有竞争力的是真正能够实现这些API的人。

    这也就是为什么机器学习、图片识别这些岗位的招人要求都是硕士起的原因。

    你一句话就能实现人脸识别,但要让你优化提升人脸识别成功率,你就抓瞎了。而这些岗位需要的恰恰就是优化算法、创建算法的这些人。

    三、下载时间到

    虽然程序简单,但是在整个配置、执行过程中,还是会遇到不少问题的。我在配置、运行过程中的记录会放在第四部分,供大家参考。

    大家可以到我GitHub上去下载我已经修复好的源码:

    https://github.com/harvic/BossSensor

    也可以扫描下方的二维码,到我小号【启舰杂谈】上,回复【013】获取源码和配置注意事项合集

    (回复【013】,获取源码/注意事项文档合集)

    四、配置/运行注意事项

    这部分是用MarkDown语法写的,在上面回复013获取到的注意事项里都有。

    内容写的比较细,建议你在配置\运行的时候,再仔细看,现在看的话,只会头大。

    一、配置过程

    1、安装Anaconda

    (1)、到https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/?下载Anaconda3-4.1.0版本

    注意:

    • 是Anaconda3开头,不是Anaconda2!!!!该版本对应的Python版本是3.5.1。

    • 安装过程中注意勾选安装及自动配置Python3.5.1的勾选框,一定要勾选,不然很可能与本文环境不同而导致不可知的问题。

    2、cmd中执行?

    conda create -n venv python=3.5

    (1)、先将cmd的执行目录切到你下载的BossSensor的根目录:

    (2)、执行?conda create -n venv python=3.5?

    会询问是否继续,输入y,以继续程序。后续的各项,都会有这种询问,直接输入y即可

    3、执行?activate venv

    4、执行
    ?conda install -c https://conda.anaconda.org/menpo opencv3

    5、执行
    ?conda install -c conda-forge tensorflow

    6、执行?
    pip install -r requirements.txt

    到这里,我都没有报过错,我是win10环境,如果你有报错,可能与你的环境有关,需要自行查找解决方案哦。

    二、训练老板图片集

    1、放进需要捕捉的人头像

    (1)、初次尝试,建议大家先用自己的图片尝试,先把整个流程走通再说。把图片放进1、BossSensor\data\boss文件夹下

    注意:文件名不能有中文,不然会报“AttributeError: 'NoneType' object has no attribute 'shape'”错误

    (2)、至少放10张图片,如果想要更改训练的图片数量,可以到boss_train.py中,将train(self, dataset, batch_size=10, nb_epoch=40, data_augmentation=True),中的batch_size=10中的10修改掉,这个10就是默认的训练图片数量,当然,图片越多,精准度越高

    注意:如果执行时仍然报“'ProgbarLogger' no attribute 'log_values' ”错误,就表示图片数量不够,可以再加几张图片试试。

    2、一切就绪以后,执行?python boss_train.py

    执行成功后,结果如下:

    三、捕捉老板

    捕捉老板的指令为python camera_reader.py,以下的安装步骤,都是因为直接执行该指令报错之后,一步步排查解决的过程。

    当然,你也可以不看下面的步骤,直接执行捕捉老板的指令,看是否报错。如果能直接执行最好,如果不能直接执行,则可以根据我的排查与安装过程做为参考,看是否能够解决。

    1、先安装PyQt5,执行
    ?conda install pyqt=5

    (1)、执行?conda install pyqt=5?安装PyQt5

    原作者使用的PyQt4版本,因为版本过老,我这里修改成PyQt5版本了,并且把原来用到的函数进行了修改,以保证正常运行,所以,如果你跟原作者版本相比较的话,会发现这里是有改动的。

    2、安装openCV,执行
    conda install py-opencv=3.4.2

    这时候,如果你执行捕捉老板程序的指令,你会发现报错:

    是因为缺少opencv,所以,我们需要安装opencv2

    执行?conda install py-opencv=3.4.2

    3、更新 scikit-learn,执行
    conda update scikit-learn

    如果你重新执行训练老板的程序,你会发现报错:

    执行?conda update scikit-learn更新scikit-learn

    4、安装keras,执行?
    pip install keras==2.2.4

    再次执行监控老板指令,会报?ImportError: No module named 'keras'错误

    安装keras2.2.4版本,pip install keras==2.2.4

    一定注意,keras版本不能错!!!!错了以后,会因为函数用法不一致,而出现其它问题。

    5、安装tensorflow,
    conda install tensorflow

    当你再次执行监控老板指令时,会报?ImportError: No module named 'tensorflow'错误

    安装tensorflow,
    执行?conda install tensorflow

    6、执行监控老板指令,成功!!!

    执行python camera_reader.py,开始监控老板

    (1)、持续监控老板中

    执行指令以后,界面如下:

    我为了让大家感知,当前程序正在监控,所以让它一直在打印日志“Is monitoring”

    这时候,你会发现,你摄像头被开启了,因为它的灯亮了

    (2)、老板到来

    当老板到来时,桌面会瞬间被切到预置的图片s_pycharm.jpg,并全屏显示

    此时,代码停止:

    到这里,整个程序就运行完了,下面要讲一些如何修改代码的问题,有些没接触过Python的小伙伴,可以帮你研究研究。

    7、修改代码

    (1)、修改展示图片

    如果你想修改老板出现时,所出现的图片的话,就非常简单,你只需要保持s_pycharm.jpg的文件名不变,把原图片替换掉即可。

    (2)、为什么程序只执行一次,能不能循环执行?

    为什么程序只执行一次呢?原因还是要看代码

    在发现老版时,会调用show_image()方法

    show_image()方法在image_show.py中:

    从这段代码中可以看出,在执行完展示图片以后,作者调用了sys.exit(app.exec_())来退出整个主程序。

    既然知道原因在哪了,那你能实现让它在老板消失以后,继续重新执行吗?

    试试吧,留个作业。

    ?


    我精心整理了计算机各个方向的从入门、进阶、实战的视频课程和电子书,都是技术学习路上必备的经验,跟着视频学习是进步最快的,而且所有课程都有源码,直接跟着去学!!!

    只要关注微信公众号【启舰杂谈】后回复你所需方向的关键字即可,比如『Android』、『java』、『ReactNative』、『H5』、『javaweb』、『面试』、『机器学习』、『web前端』、『设计模式』等关键字获取对应资料。(所有资料免费送,转发宣传靠大家自愿)

    下一篇:没有了