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

Posted 启舰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了反抗996!启舰肝了个监控老板人脸,自动切桌面程序相关的知识,希望对你有一定的参考价值。

前两天我在逛全球最大同性社交网站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前端』、『设计模式』等关键字获取对应资料。(所有资料免费送,转发宣传靠大家自愿)

以上是关于反抗996!启舰肝了个监控老板人脸,自动切桌面程序的主要内容,如果未能解决你的问题,请参考以下文章

妹妹被老板骂:数据库都不会?要你干嘛,这我能忍!马上肝了一篇打包给她建议收藏

不想996的程序员不是好老板(上)

为什么程序员 996 会猝死,而老板 007 却不会?

用Python做个摸鱼神器来监控老板,真是个好东东

Java程序员,你会选择25k的996还是18k的965?

监控敲键盘来追踪员工努力程度,特斯拉打工人举起反抗大旗!