20元制作笔记本电脑防偷窥神器
前言
有时候离开电脑忘记锁屏,就会担心电脑屏幕被家长、同事偷看。如何利用20元制作笔记本电脑防偷窥神器,我打算从硬件+软件来实现,这里需要你懂亿点点单片机的知识。如果光从软件上实现并不太现实,因为需要一直打开笔记本的摄像头。
硬件
硬件 | 价格 |
---|---|
Arduino pro mini | 10 |
热释电传感器 | 7 |
Arduino pro mini是的价格在10-13元左右,人体红外传感器的价格在7-8元,硬件成本在20元。
软件
- Arduino IDE
- Pycharm
- python3
原理
当人靠近电脑时,红外传感器检测到热体靠近,发送高电平到MCU,MCU与主机电脑利用串口通信,再利用主机摄像头对热体进行人脸识别,识别为人脸,则主机关闭屏幕,达到防窥视的目的。
安装库
pip install opencv-python
pip install pyserial
pip install itchat
pip install apscheduler
pip install baidu-aip
Arduino程序
红外传感器的使用即程序,可以参考我之前的博文Arduino使用人体红外传感器,我们直接把程序烧录进Arduino上,不要忘了打开串口检测一下程序是否正常运行。
/**richowe */int sensor_pin = 2;
int c = 0;void setup() {Serial.begin(9600);pinMode(sensor_pin,INPUT);Serial.flush();
}void loop() {int val = digitalRead(sensor_pin);if (val == 1){delay(50);if (val == 1){c = 1; //反转c值Serial.println("have people"); delay(5000);delay(5000); //延时10s}}else if (c==1 && val==0){c = 0;Serial.println("people left"); //当人离开的时候打印}
}
与主机的串行通信
串行通信利用的pyserial,实现方法可以参考我之前的博客Linux串口通信Arduino#2。
ctypes实现待机
利用python内置函数ctypes实现锁屏,现在给出demo程序,运行程序,成功锁屏。
from ctypes import *
def closewindows():user32 = windll.LoadLibrary('user32.dll')user32.LockWorkStation()
if __name__ == "__main__":closewindows()
opencv
利用opencv打开笔记本的摄像头,实现拍照,再进行一个人脸识别或人体识别,判断热体是否为人体。如何使用opencv打开笔记本摄像头可参考我之前的博客Python opencv图像处理。
itchat
要实现远程控制,我这里想到的是之前有学习使用的网页版的itchat,使用itchat我们可以离开电脑之后实现远程监测我们的电脑前的环境。itchat的基础操作可以参考Python微信操控itchat定时发送消息。
百度AI平台
百度AI平台提供了很多接口,在这个项目上,我们可以利用到百度提供的人脸识别、人体识别的SDK。调用百度的接口可参考Python利用百度AI平台实现人脸识别。
实现方法
- 方法一
当有人靠近时,电脑屏幕直接锁定。大家要先给Arduino开发板烧录好程序,我们直接读取串口数据再利用python内置函数ctypes实现锁屏。
我们先来接收一下串口数,看一下格式是怎样的。
import serialport = "COM4" #Arduino串口地址
rates = 9600 #设置波特率
ser = serial.Serial(port, rates, timeout=1) #设置串口
ser.flushInput() #清空缓存器while True:line = ser.readline()print(line)
接收到的数据格式是b’ \r\n’ ,例如:b’have people\r\n’
接下来,就直接编写锁定程序,方法一
import serial
from ctypes import *port = "COM4" #Arduino串口地址
rates = 9600 #设置波特率
ser = serial.Serial(port, rates, timeout=1) #设置串口
ser.flushInput() #清空缓存器def closewindows():while True:line = ser.readline()if (line == b'have people\r\n'):user32 = windll.LoadLibrary('user32.dll')user32.LockWorkStation()if __name__ == "__main__":closewindows()
运行程序,红外传感器检测到热源,电脑屏幕自动锁定,当然,记住设置密码,这样别人就不会轻易偷窥到你的电脑屏幕啦。
- 方法二
如果热源不是人的时候,是家里的小宠物的时候,那我们就可以利用opencv对热源进行拍照,再通过百度AI平台进行人脸识别,确定是热源是人的时候再将电脑屏幕关闭。
首先,我们先要调用opencv进行拍照,接着再将照片保留成jpg格式。
import cv2def get_photo():cap = cv2.VideoCapture(0, cv2.CAP_DSHOW) # 打开摄像头ret, img = cap.read() # ret为返回值,img为当前帧img1 = cv2.flip(img, 1) # 图像反转,1为左右对换time.sleep(2) # 延迟2scv2.imwrite("img.jpg", img1) # 保存停止帧图cap.release() #释放摄像头
接着,我们调用人脸识别接口,对图片是否为人像进行判断,判断为人像,屏幕锁定。当检测到不是人脸的时候,百度接口会返回这样的信息error_msg:pic not has face,当检测到正常人脸的时候,有几条信息都是可以代表是人脸,但face_token是百度唯一的人脸标识,并且为一串字符。
直接po程序
import cv2,time,serial,base64
from ctypes import *
from aip import AipFace# 串口参数设置
port = "COM4" # Arduino串口地址
rates = 9600 # 设置波特率
ser = serial.Serial(port, rates, timeout=1) # 设置串口
ser.flushInput() # 清空缓存器# 百度接口
APP_ID = '19492922'
API_KEY = 'nlyImVonYtURm1IcYpqvYRZn'
SECRET_KEY = 'jiMf0auF7DW2iptPElirp5n4L5esFYeC'
client = AipFace(APP_ID, API_KEY, SECRET_KEY)def closewindows():while True:line = ser.readline()if (line == b'have people\r\n'):get_photo()face_check()def face_check():with open("img.jpg", "rb") as f:img_data = f.read()data = base64.b64encode(img_data)image = data.decode()imageType = "BASE64"client.detect(image, imageType)options = {}options["max_face_num"] = 10res = client.detect(image, imageType, options)#print(res)if (res['error_msg'] == 'pic not has face'):print("not has people")elif (res['result']['face_list'][0]['face_token'] != 'NONE'):user32 = windll.LoadLibrary('user32.dll')user32.LockWorkStation()def get_photo():cap = cv2.VideoCapture(0, cv2.CAP_DSHOW) # 打开摄像头ret, img = cap.read() # ret为返回值,img为当前帧img1 = cv2.flip(img, 1) # 图像反转,1为左右对换time.sleep(2)cv2.imwrite("img.jpg", img1) # 保存停止帧图cap.release()if __name__ == "__main__":closewindows()
- 方法三
利用itchat进行微信监控,当检测到热体的时候,拍照并将照片发到微信,我们可以判断是否锁屏。
直接给出程序
import itchat
import serial
import cv2
import time
from ctypes import *
from itchat.content import PICTURE, RECORDING, ATTACHMENT, VIDEO, TEXT, MAP
from apscheduler.schedulers.background import BackgroundSchedulerport = "COM4" #Arduino串口地址
rates = 9600 #设置波特率ser = serial.Serial(port, rates, timeout=1) #设置串口
ser.flushInput() #清空缓存器def job_function():val = 1while True:line = ser.readline()if (val == 1 and line == b'have people\r\n'):itchat.send("有人靠近,正在获取图像...",toUserName="filehelper")get_photo()itchat.send_image("img.jpg", toUserName="filehelper")val-=1time.sleep(10)elif (line == b'people left\r\n'):itchat.send("已经离开...",toUserName="filehelper")val+=1break@itchat.msg_register([TEXT,PICTURE])
def send_photo(msg):if (msg.text == "拍照"):get_photo()itchat.send("正在拍照...",toUserName="filehelper")itchat.send_image("img.jpg", toUserName="filehelper")elif (msg.text == "锁屏"):user32 = windll.LoadLibrary('user32.dll')user32.LockWorkStation()itchat.send("执行锁屏!", toUserName="filehelper")def get_photo():cap = cv2.VideoCapture(0, cv2.CAP_DSHOW) # 打开摄像头ret, img = cap.read() # ret为返回值,img为当前帧img1 = cv2.flip(img, 1) # 图像反转,1为左右对换time.sleep(2)cv2.imwrite("img.jpg", img1) # 保存停止帧图cap.release()scheduler = BackgroundScheduler()scheduler.add_job(job_function, 'interval', minutes=1)if __name__ == '__main__':itchat.login()scheduler.start()itchat.run()
防拔下!!!剩下的完整程序写完后上传
20元制作笔记本电脑防偷窥神器相关推荐
- 机器人x展架制作_门型展架80*180易拉宝x展架海报架广告架立牌展示架地推海报2元优惠券券后价20元...
★门型展架80*180易拉宝x展架海报架广告架立牌展示架地推海报,2元拼多多优惠券★券后价20元★★★门型展架80*180易拉宝x展架海报架广告架立牌展示架地推海报¥20元¥22元已拼5299件点击抢 ...
- python名片制作代码_教你做一张能运行 Python 的名片,成本只要20元!
原标题:教你做一张能运行 Python 的名片,成本只要20元! 作为一名普普通通的开发者,改变世界估计是办不到了,但可以让世界更 Geek 一些. 极客名片的诞生 如标题所说,表面上看这是一个名片, ...
- SEO优化论坛让我懂了没团队经验,看如何制作短视频赚钱一天20元
SEO优化论坛让我懂了没团队经验,看如何制作短视频赚钱一天20元 都知道短视频博主特赚钱. 可是咱们自己一没经验. 二没团队. 连做什么内容都没人告诉我. 也想过找人知道,但是肯定得花钱,花钱倒是不怕 ...
- 我的名片能运行Linux和Python,还能玩2048小游戏,成本只要20元
晓查 发自 凹非寺 量子位 报道 | 公众号 QbitAI 猜猜它是什么?印着姓名.职位和邮箱,看起来是个名片.可是右下角有芯片,看起来又像是个PCB电路板. 其实它是一台超迷你的ARM计算机,不仅 ...
- 上海公布公交卡成本 押金拟从30元调至20元
人民网上海6月20日专电(记者 沈文敏)曾因押金过高而备受质疑的上海公共交通卡,其押金式普通卡成本和押金使用情况的审计结论近日正式公布.根据审计情况,上海在今年底前拟对交通卡的押金由目前的30元调低至 ...
- FL Studio 20音乐制作教程
FL Studio 20音乐制作教程 FL Studio 20 中的音乐制作 – 制作 3 首完整曲目 – 只需一天即可管理 FL Studio,音乐.混音和母带制作 课程英文名:FL Studio ...
- 在天猫开店,成本20元,卖60也亏本,这是为什么?
导读:有的人做了3.4年电商,还弄不明白"成本"里包含哪几项.就像央视打星巴克咖啡,以为出厂价20元拿到手的产品,只要卖上40元,自己就赚了一倍.事实上,在今天,如果你在" ...
- 借贷宝详细注册步骤:邀请朋友送20元,朋友再邀请朋友还送你10元【3天已赚6千】(附我的邀请记录和提现到账截图)...
九鼎8月8日开始正式推广"借贷宝",推广费用为20亿.按照熟人带熟人的模式推广:A带B.B带C.C带D --依次类推,呈病毒式传播.无论谁只要通过扫描上一级人员的二维码 ...
- 线上每课时20元 北京上海义务教育阶段学科类校外培训指导价公布
1月2日消息,近日,北京.上海相继公布了义务教育阶段学科类校外培训政府指导价. 北京市市发改委会同市教委.市市场监管局发布<北京市义务教育阶段学科类校外培训收费管理办法(试行)>,并同步出 ...
- ofo在北京上线有桩模式,违规最高罚20元
据悉,ofo在北京正式上线有桩新模式,有桩点位数量达20000个. ofo官方APP显示,"北京五环内还车新规:请根据手机端到停车点完成还车,否则需缴纳20元车辆管理费." 据of ...
最新文章
- C#苹果应用开发——第一讲初始Xamarin
- 深入浅出之Smarty模板引擎工作机制(一)
- Python报错:IndentationError: expected an indented block
- Python基础知识-优雅的with as语句
- Java 可重入锁内存可见性分析
- IEnumerable.EachTSource(FuncTSource, TSource predicate) 逐个更改列表成员的值
- mysql 主键 最佳实践_设计套路:Mysql主键的选取
- red6.4 mysql_rhel6.4 yum本地yum源配置
- (计算机组成原理)第五章中央处理器-第四节4:微程序控制单元设计
- JeecgBoot 2.4.3版本发布,企业级低代码平台
- 【李宏毅2020 ML/DL】P24 Semi-supervised
- 01 Nginx的高并发处理
- 【渝粤教育】国家开放大学2019年春季 3818-22T燃气工程施工 参考试题
- 模拟经营游戏框架构思
- win10 jFrameDesigner安装
- JAVA之父----詹姆斯.高斯林
- python三维建模和cad比较_对比Revit和CAD三维建模的不同
- matlab绘制心形函数
- quartus ii怎么生成pof和下载pof文件
- 风向值与风向描述定义
热门文章
- animation之补间动画
- 头像怎么画,日系头像绘画教程
- Android 拨号盘按键音修改为钢琴音效果实现
- centos格式化优盘命令_centos 格式化分区
- 1.DingoApi安装和配置
- AppCompatActivity设置透明背景
- 中年危机也许只是个幻觉
- 16S rDNA测序和宏基因组测序区别
- python采用强制缩进的方式使得代码具有极佳的可读性_计算机专业高级语言程序设计课程改革探索...
- Linux第7章Gdk及Cairo基础,Linux第7章Gdk及Cairo基础.ppt