我的编程空间,编程开发者的网络收藏夹
学习永远不晚
位置:首页-资讯-运维

人工智能用Python实时监控

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

人工智能用Python实时监控

再也不怕别人动电脑了!用Python实时监控.人工智能是计算机学科的一个分支,二十世纪七十年代以来被称为世界三大尖端技术之一( 空间技术、 能源技术、 人工智能)。也被认为是二十一世纪三大尖端技术( 基因工程、 纳米科学、 人工智能)之一。这是因为近三十年来它获得了迅速的发展,在很多学科领域都获得了广泛应用,并取得了丰硕的成果,人工智能已逐步成为一个独立的分支,无论在理论和实践上都已自成一个系统。

前言

最近突然有个奇妙的想法,就是当我对着电脑屏幕的时候,电脑会先识别屏幕上的人脸是否是本人,如果识别是本人的话需要回答电脑说的暗语,答对了才会解锁并且有三次机会。如果都没答对就会发送邮件给我,通知有人在动我的电脑并上传该人头像。

过程

环境是win10代码我使用的是python3所以在开始之前需要安装一些依赖包,请按顺序安装否者会报错

  1. pip install cmake -i httPS://pypi.tuna.tsinghua.edu.cn/simple  
  2. pip install dlib -i https://pypi.tuna.tsinghua.edu.cn/simple  
  3. pip install face_recognition -i https://pypi.tuna.tsinghua.edu.cn/simple  
  4. pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple 

接下来是构建识别人脸以及对比人脸的代码

  1. import face_recognition  
  2. import cv2  
  3. import numpy as np  
  4. video_capture = cv2.VideoCapture(0)  
  5. my_image = face_recognition.load_image_file("my.jpg")  
  6. my_face_encoding = face_recognition.face_encodings(my_image)[0]  
  7. known_face_encodings = [  
  8.     my_face_encoding  
  9. ]  
  10. known_face_names = [  
  11.     "Admin"  
  12. ]  
  13. face_names = []  
  14. face_locations = []  
  15. face_encodings = []  
  16. process_this_frame = True  
  17. while True:  
  18.     ret, frame = video_capture.read()  
  19.     small_frame = cv2.resize(frame, (0, 0), fx=0.25, fy=0.25)  
  20.     rgb_small_frame = small_frame[:, :, ::-1]  
  21.     if process_this_frame:  
  22.         face_locations = face_recognition.face_locations(rgb_small_frame)  
  23.         face_encodings = face_recognition.face_encodings(rgb_small_frame, face_locations)  
  24.         face_names = []  
  25.         for face_encoding in face_encodings:  
  26.             matches = face_recognition.compare_faces(known_face_encodings, face_encoding)  
  27.             name = "Unknown"  
  28.             face_distances = face_recognition.face_distance(known_face_encodings, face_encoding)  
  29.             best_match_index = np.argmin(face_distances)  
  30.             if matches[best_match_index]:  
  31.                 name = known_face_names[best_match_index]  
  32.             face_names.append(name)  
  33.     process_this_frame = not process_this_frame  
  34.     for (top, right, bottom, left), name in zip(face_locations, face_names):  
  35.         top *= 4  
  36.         left *= 4  
  37.         right *= 4  
  38.         bottom *= 4  
  39.         font = cv2.FONT_HERSHEY_DUPLEX  
  40.         cv2.rectangle(frame, (left, top), (right, bottom), (0, 0, 255), 2)  
  41.         cv2.rectangle(frame, (left, bottom - 35), (right, bottom), (0, 0, 255), cv2.FILLED)  
  42.         cv2.putText(frame, name, (left + 6, bottom - 6), font, 1.0, (255, 255, 255), 1)  
  43.     cv2.imshow('Video', frame)  
  44.     if cv2.waitKey(1) & 0xFF == ord('q'):  
  45.         break  
  46. video_capture.release()  
  47. cv2.destroyAllWindows() 

其中my.jpg需要你自己拍摄上传,运行可以发现在你脸上会出现Admin的框框,我去网上找了张图片类似这样子

人工智能用Python实时监控_人工智能_开发_尖端技术_编程学习网

识别功能已经完成了接下来就是语音识别和语音合成,这需要使用到百度AI来实现了,去登录百度AI的官网到控制台选择左边的语音技术,然后点击面板的创建应用按钮,来到创建应用界面

打造电脑版人脸屏幕解锁神器

创建后会得到AppID、API Key、Secret Key记下来,然后开始写语音合成的代码。安装百度AI提供的依赖包

  1. pip install baidu-aip -i https://pypi.tuna.tsinghua.edu.cn/simple  
  2. pip install playsound -i https://pypi.tuna.tsinghua.edu.cn/simple 

然后是简单的语音播放代码,运行下面代码可以听到萌妹子的声音

  1. import sys  
  2. from aip import AipSpeech  
  3. from playsound import playsound 
  4. app_ID = ''  
  5. API_KEY = ''  
  6. SECRET_KEY = ''  
  7. client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)  
  8. result = client.synthesis('你好吖', 'zh', 1, {'vol': 5, 'per': 4, 'spd': 5, })  
  9. if not isinstance(result, dict):  
  10.     with open('auido.mp3', 'wb') as file:  
  11.         file.write(result)  
  12. filepath = eval(repr(sys.path[0]).replace('\\\\', '/')) + '//auido.mp3'  
  13. playsound(filepath) 

有了上面的代码就完成了检测是否在电脑前(人脸识别)以及电脑念出暗语(语音合成)然后我们还需要回答暗号给电脑,所以还需要完成语音识别。

  1. import wave  
  2. import pyaudio  
  3. from aip import AipSpeech  
  4. APP_ID = ''  
  5. API_KEY = ''  
  6. SECRET_KEY = ''  
  7. client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)  
  8. CHUNK = 1024  
  9. FORMAT = pyaudio.paInt16  
  10. CHANNELS = 1  
  11. RATE = 8000  
  12. RECORD_SECONDS = 3  
  13. WAVE_OUTPUT_FILENAME = "output.wav"  
  14. p = pyaudio.PyAudio()  
  15. stream = p.open(format=FORMATchannels=CHANNELSrate=RATEinput=Trueframes_per_buffer=CHUNK)  
  16. print("* recording")  
  17. frames = []  
  18. for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):  
  19.     data = stream.read(CHUNK)  
  20.     frames.append(data)  
  21. print("* done recording")  
  22. stream.stop_stream()  
  23. stream.close()  
  24. p.terminate()  
  25. wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')  
  26. wf.setnchannels(CHANNELS)  
  27. wf.setsampwidth(p.get_sample_size(FORMAT))  
  28. wf.setframerate(RATE)  
  29. wf.writeframes(b''.join(frames))  
  30. def get_file_content():  
  31.     with open(WAVE_OUTPUT_FILENAME, 'rb') as fp:  
  32.         return fp.read()  
  33. result = client.asr(get_file_content(), 'wav', 8000, {'dev_pid': 1537, })  
  34. print(result) 

运行此代码之前需要安装pyaudio依赖包,由于在win10系统上安装会报错所以可以通过如下方式安装。到这个链接 https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyaudio 去下载对应的安装包然后安装即可。

打造电脑版人脸屏幕解锁神器

运行后我说了你好,可以看到识别出来了。那么我们的小模块功能就都做好了接下来就是如何去整合它们。可以发现在人脸识别代码中if matches[best_match_index]这句判断代码就是判断是否为电脑主人,所以我们把这个判断语句当作main函数的入口。

  1. if matches[best_match_index]:  
  2.     # 在这里写识别到之后的功能  
  3.     name = known_face_names[best_match_index] 

那么识别到后我们应该让电脑发出询问暗号,也就是语音合成代码,然我们将它封装成一个函数,顺便重构下人脸识别的代码。

  1. import cv2  
  2. import time  
  3. import numpy as np  
  4. import face_recognition  
  5. video_capture = cv2.VideoCapture(0)  
  6. my_image = face_recognition.load_image_file("my.jpg")  
  7. my_face_encoding = face_recognition.face_encodings(my_image)[0]  
  8. known_face_encodings = [  
  9.     my_face_encoding  
  10. ]  
  11. known_face_names = [  
  12.     "Admin"  
  13. ]  
  14. face_names = []  
  15. face_locations = []  
  16. face_encodings = []  
  17. process_this_frame = True  
  18. def speak(content):  
  19.     import sys  
  20.     from aip import AipSpeech  
  21.     from playsound import playsound  
  22.     APP_ID = ''  
  23.     API_KEY = ''  
  24.     SECRET_KEY = ''  
  25.     client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)  
  26.     result = client.synthesis(content, 'zh', 1, {'vol': 5, 'per': 0, 'spd': 5, })  
  27.     if not isinstance(result, dict):  
  28.         with open('auido.mp3', 'wb') as file:  
  29.             file.write(result)  
  30.     filepath = eval(repr(sys.path[0]).replace('\\\\', '/')) + '//auido.mp3'  
  31.     playsound(filepath)  
  32. try:  
  33.     while True:  
  34.         ret, frame = video_capture.read()  
  35.         small_frame = cv2.resize(frame, (0, 0), fx=0.25, fy=0.25)  
  36.         rgb_small_frame = small_frame[:, :, ::-1]  
  37.         if process_this_frame:  
  38.             face_locations = face_recognition.face_locations(rgb_small_frame)  
  39.             face_encodings = face_recognition.face_encodings(rgb_small_frame, face_locations)  
  40.             face_names = []  
  41.             for face_encoding in face_encodings:  
  42.                 matches = face_recognition.compare_faces(known_face_encodings, face_encoding)  
  43.                 name = "Unknown"  
  44.                 face_distances = face_recognition.face_distance(known_face_encodings, face_encoding)  
  45.                 best_match_index = np.argmin(face_distances)  
  46.                 if matches[best_match_index]:  
  47.                     speak("识别到人脸,开始询问暗号,请回答接下来我说的问题")  
  48.                     time.sleep(1)  
  49.                     speak("天王盖地虎")  
  50.                     error = 1 / 0  
  51.                     name = known_face_names[best_match_index]  
  52.                 face_names.append(name)  
  53.         process_this_frame = not process_this_frame  
  54.         for (top, right, bottom, left), name in zip(face_locations, face_names):  
  55.             top *= 4  
  56.             left *= 4  
  57.             right *= 4  
  58.             bottom *= 4 
  59.             font = cv2.FONT_HERSHEY_DUPLEX  
  60.             cv2.rectangle(frame, (left, top), (right, bottom), (0, 0, 255), 2)  
  61.             cv2.rectangle(frame, (left, bottom - 35), (right, bottom), (0, 0, 255), cv2.FILLED)  
  62.             cv2.putText(frame, name, (left + 6, bottom - 6), font, 1.0, (255, 255, 255), 1)  
  63.         cv2.imshow('Video', frame)  
  64.         if cv2.waitKey(1) & 0xFF == ord('q'):  
  65.             break  
  66. except Exception as e:  
  67.     print(e)  
  68. finally:  
  69.     video_capture.release()  
  70.     cv2.destroyAllWindows() 

这里有一点需要注意,由于playsound播放音乐的时候会一直占用这个资源,所以播放下一段音乐的时候会报错,解决方法是修改~\\Python37\\Lib\\site-packages下的playsound.py文件,找到如下代码

打造电脑版人脸屏幕解锁神器

在sleep函数下面添加winCommand('close', alias)这句代码,保存下就可以了。运行发现可以正常将两句话都说出来。那么说出来之后就要去监听了,我们还要打包一个函数。

  1. def record():  
  2.     import wave  
  3.     import json  
  4.     import pyaudio  
  5.     from aip import AipSpeech  
  6.     APP_ID = ''  
  7.     API_KEY = ''  
  8.     SECRET_KEY = ''  
  9.     client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)  
  10.     CHUNK = 1024  
  11.     FORMAT = pyaudio.paInt16  
  12.     CHANNELS = 1  
  13.     RATE = 8000  
  14.     RECORD_SECONDS = 3  
  15.     WAVE_OUTPUT_FILENAME = "output.wav"  
  16.     p = pyaudio.PyAudio()  
  17.     stream = p.open(format=FORMATchannels=CHANNELSrate=RATEinput=Trueframes_per_buffer=CHUNK)  
  18.     print("* recording")  
  19.     frames = []  
  20.     for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):  
  21.         data = stream.read(CHUNK)  
  22.         frames.append(data)  
  23.     print("* done recording")  
  24.     stream.stop_stream()  
  25.     stream.close()  
  26.     p.terminate()  
  27.     wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')  
  28.     wf.setnchannels(CHANNELS)  
  29.     wf.setsampwidth(p.get_sample_size(FORMAT))  
  30.     wf.setframerate(RATE)  
  31.     wf.writeframes(b''.join(frames))  
  32.     def get_file_content():  
  33.         with open(WAVE_OUTPUT_FILENAME, 'rb') as fp:  
  34.             return fp.read()  
  35.     result = client.asr(get_file_content(), 'wav', 8000, {'dev_pid': 1537, })  
  36.     result = json.loads(str(result).replace("'", '"'))  
  37.     return result["result"][0] 

将识别到人脸后的代码修改成如下

  1. if matches[best_match_index]:  
  2.     speak("识别到人脸,开始询问暗号,请回答接下来我说的问题")  
  3.     time.sleep(1)  
  4.     speak("天王盖地虎")  
  5.     flag = False 
  6.      for times in range(0, 3):  
  7.         content = record()  
  8.         if "小鸡炖蘑菇" in content:  
  9.             speak("暗号通过")  
  10.             flag = True  
  11.             break  
  12.         else:  
  13.             speak("暗号不通过,再试一次")  
  14.     if flag:  
  15.         print("解锁")  
  16.     else:  
  17.         print("发送邮件并将坏人人脸图片上传!")  
  18.     error = 1 / 0  
  19.     name = known_face_names[best_match_index] 

运行看看效果,回答电脑小鸡炖蘑菇,电脑回答暗号通过。这样功能就基本上完成了。

打造电脑版人脸屏幕解锁神器

结语

至于发送邮件的功能和锁屏解锁的功能我就不一一去实现了,我想这应该难不倒在座的各位吧。锁屏功能可以HOOK让键盘时间无效化,然后用窗口再覆盖整个桌面即可,至于邮箱发送网上文章很多的。

即人工智能是研究人类智能活动的规律,构造具有一定智能的人工系统,研究如何让计算机去完成以往需要人的 智力才能胜任的工作,也就是研究如何应用计算机的软 硬件来模拟人类某些智能行为的基本理论、方法和技术。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

人工智能用Python实时监控

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

人工智能用Python实时监控

编程学习网:最近突然有个奇妙的想法,就是当我对着电脑屏幕的时候,电脑会先识别屏幕上的人脸是否是本人,如果识别是本人的话需要回答电脑说的暗语,答对了才会解锁并且有三次机会。
人工智能用Python实时监控

人工智能可监控新冠病毒隔离人员

编程学习网:埃及开罗大学的研究人员认为,智能医疗系统可以帮助减轻医院的负担,仅将重症和重症患者留在医疗机构中。
人工智能可监控新冠病毒隔离人员

编程热搜

  • 人工智能你要知道的那些事
    编程学习网:早在1g时代我们只能接打电话。2g时代可以打电话发短信,玩早期的qq,但网络十分不稳定。3g时代带给我们很大的改变就是宽带上网,视频通话,看视频,听歌玩游戏。那时的人们认为4g无用,认为不会有什么改变,但当4g出来时我们才发现这是一次质的飞跃。
    人工智能你要知道的那些事
  • 人工智能无人机管制到底有多难?
    编程学习网:近日,一段“重庆网红列车遭无人机撞击逼停”的视频,在网络热传。
    人工智能无人机管制到底有多难?
  • 人工智能与人类
    欢迎各位阅读本篇,人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。本篇文章讲述了人工智能与人类,编程学习网教育平台提醒各位:本篇文章纯干货~因此大家一定要认真阅读本篇文章哦!
    人工智能与人类
  • 两小时 Elasticsearch 性能优化,直接把慢查询干团灭了……
    公共集群的机器负载分布不均衡的问题,业务的查询和流量不可控等各种各样的问题,要节省机器资源就一定会面对这种各种各样的问题,除非土豪式做法,每个业务都拥有自己的机器资源,这里面有很多很多颇具技术挑战的事情。
    两小时 Elasticsearch 性能优化,直接把慢查询干团灭了……
  • 关于OpenStack的架构详细讲解
    欢迎各位阅读本篇文章,OpenStack是一个开源的云计算管理平台项目,由几个主要的组件组合起来完成具体工作。本篇文章讲述了关于OpenStack的架构详细讲解,编程学习网教育平台提醒各位:本篇文章纯干货~因此大家一定要认真阅读本篇文章哦!
    关于OpenStack的架构详细讲解
  • AI &神经网络
    欢迎各位阅读本篇,本篇文章讲述了AI &神经网络,人工智能(Artificial Intelligence),英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。神经网络内容丰富,反映了当前国内外该领域的最新研究成果和动向,编程学习网教育平台提醒各位:本篇文章纯干货~因此大家一定要认真阅读本篇文章哦!
    AI &神经网络
  • 人工智能对于网络安全的优缺点
    编程学习网:如今,产生的数据比以往任何时候都要多。由于数据分析工具的发展,各行各业的组织都更加重视大数据的收集和存储。
    人工智能对于网络安全的优缺点
  • Bash 初学者系列 7:bash 中的条件语句(if else)
    今天我们介绍一下如何在 bash 中使用条件语句。
    Bash 初学者系列 7:bash 中的条件语句(if else)
  • 人工智能机器学习的重要趋势是什么?
    编程学习网:在竞争日益激烈的技术市场中,从高科技初创公司到全球跨国公司都将人工智能视为关键竞争优势。但是,人工智能行业发展如此之快,以至于很难跟踪最新的研究突破和成就,甚至很难应用科学成果来实现业务成果。
    人工智能机器学习的重要趋势是什么?
  • 人工智能为什么会觉得Matplotlib用起来困难?
    编程学习网:Matplotlib是一个流行的Python库,可以很容易地用于创建数据可视化。
    人工智能为什么会觉得Matplotlib用起来困难?

目录