日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

再也不怕别人动电脑了!用Python实时监控

發布時間:2024/9/15 python 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 再也不怕别人动电脑了!用Python实时监控 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作者:美圖博客

https://www.meitubk.com/zatan/386.html

前言

最近突然有個奇妙的想法,就是當我對著電腦屏幕的時候,電腦會先識別屏幕上的人臉是否是本人,如果識別是本人的話需要回答電腦說的暗語,答對了才會解鎖并且有三次機會。如果都沒答對就會發送郵件給我,通知有人在動我的電腦并上傳該人頭像。

過程

環境是win10代碼我使用的是python3所以在開始之前需要安裝一些依賴包,請按順序安裝否者會報錯

pip install cmake -i https://pypi.tuna.tsinghua.edu.cn/simple pip install dlib -i https://pypi.tuna.tsinghua.edu.cn/simple pip install face_recognition -i https://pypi.tuna.tsinghua.edu.cn/simple pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple

接下來是構建識別人臉以及對比人臉的代碼

import?face_recognition import?cv2 import?numpy?as?npvideo_capture?=?cv2.VideoCapture(0) my_image?=?face_recognition.load_image_file("my.jpg") my_face_encoding?=?face_recognition.face_encodings(my_image)[0] known_face_encodings?=?[my_face_encoding ] known_face_names?=?["Admin" ]face_names?=?[] face_locations?=?[] face_encodings?=?[] process_this_frame?=?Truewhile?True:ret,?frame?=?video_capture.read()small_frame?=?cv2.resize(frame,?(0,?0),?fx=0.25,?fy=0.25)rgb_small_frame?=?small_frame[:,?:,?::-1]if?process_this_frame:face_locations?=?face_recognition.face_locations(rgb_small_frame)face_encodings?=?face_recognition.face_encodings(rgb_small_frame,?face_locations)face_names?=?[]for?face_encoding?in?face_encodings:matches?=?face_recognition.compare_faces(known_face_encodings,?face_encoding)name?=?"Unknown"face_distances?=?face_recognition.face_distance(known_face_encodings,?face_encoding)best_match_index?=?np.argmin(face_distances)if?matches[best_match_index]:name?=?known_face_names[best_match_index]face_names.append(name)process_this_frame?=?not?process_this_framefor?(top,?right,?bottom,?left),?name?in?zip(face_locations,?face_names):top?*=?4left?*=?4right?*=?4bottom?*=?4font?=?cv2.FONT_HERSHEY_DUPLEXcv2.rectangle(frame,?(left,?top),?(right,?bottom),?(0,?0,?255),?2)cv2.rectangle(frame,?(left,?bottom?-?35),?(right,?bottom),?(0,?0,?255),?cv2.FILLED)cv2.putText(frame,?name,?(left?+?6,?bottom?-?6),?font,?1.0,?(255,?255,?255),?1)cv2.imshow('Video',?frame)if?cv2.waitKey(1)?&?0xFF?==?ord('q'):breakvideo_capture.release() cv2.destroyAllWindows()

其中my.jpg需要你自己拍攝上傳,運行可以發現在你臉上會出現Admin的框框,我去網上找了張圖片類似這樣子

識別功能已經完成了接下來就是語音識別和語音合成,這需要使用到百度AI來實現了,去登錄百度AI的官網到控制臺選擇左邊的語音技術,然后點擊面板的創建應用按鈕,來到創建應用界面

打造電腦版人臉屏幕解鎖神器

創建后會得到AppID、API Key、Secret Key記下來,然后開始寫語音合成的代碼。安裝百度AI提供的依賴包

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

然后是簡單的語音播放代碼,運行下面代碼可以聽到萌妹子的聲音

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

有了上面的代碼就完成了檢測是否在電腦前(人臉識別)以及電腦念出暗語(語音合成)然后我們還需要回答暗號給電腦,所以還需要完成語音識別。

import?wave import?pyaudio from?aip?import?AipSpeechAPP_ID?=?'' API_KEY?=?'' SECRET_KEY?=?''client?=?AipSpeech(APP_ID,?API_KEY,?SECRET_KEY) CHUNK?=?1024 FORMAT?=?pyaudio.paInt16 CHANNELS?=?1 RATE?=?8000 RECORD_SECONDS?=?3 WAVE_OUTPUT_FILENAME?=?"output.wav"p?=?pyaudio.PyAudio() stream?=?p.open(format=FORMAT,?channels=CHANNELS,?rate=RATE,?input=True,?frames_per_buffer=CHUNK)print("*?recording") frames?=?[] for?i?in?range(0,?int(RATE?/?CHUNK?*?RECORD_SECONDS)):data?=?stream.read(CHUNK)frames.append(data) print("*?done?recording")stream.stop_stream() stream.close() p.terminate() wf?=?wave.open(WAVE_OUTPUT_FILENAME,?'wb') wf.setnchannels(CHANNELS) wf.setsampwidth(p.get_sample_size(FORMAT)) wf.setframerate(RATE) wf.writeframes(b''.join(frames))def?get_file_content():with?open(WAVE_OUTPUT_FILENAME,?'rb')?as?fp:return?fp.read()result?=?client.asr(get_file_content(),?'wav',?8000,?{'dev_pid':?1537,?}) print(result)

運行此代碼之前需要安裝pyaudio依賴包,由于在win10系統上安裝會報錯所以可以通過如下方式安裝。到這個鏈接 https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyaudio 去下載對應的安裝包然后安裝即可。

打造電腦版人臉屏幕解鎖神器

運行后我說了你好,可以看到識別出來了。那么我們的小模塊功能就都做好了接下來就是如何去整合它們。可以發現在人臉識別代碼中if matches[best_match_index]這句判斷代碼就是判斷是否為電腦主人,所以我們把這個判斷語句當作main函數的入口。

if?matches[best_match_index]:#?在這里寫識別到之后的功能name?=?known_face_names[best_match_index]

那么識別到后我們應該讓電腦發出詢問暗號,也就是語音合成代碼,然我們將它封裝成一個函數,順便重構下人臉識別的代碼。

import?cv2 import?time import?numpy?as?np import?face_recognitionvideo_capture?=?cv2.VideoCapture(0) my_image?=?face_recognition.load_image_file("my.jpg") my_face_encoding?=?face_recognition.face_encodings(my_image)[0] known_face_encodings?=?[my_face_encoding ] known_face_names?=?["Admin" ]face_names?=?[] face_locations?=?[] face_encodings?=?[] process_this_frame?=?Truedef?speak(content):import?sysfrom?aip?import?AipSpeechfrom?playsound?import?playsoundAPP_ID?=?''API_KEY?=?''SECRET_KEY?=?''client?=?AipSpeech(APP_ID,?API_KEY,?SECRET_KEY)result?=?client.synthesis(content,?'zh',?1,?{'vol':?5,?'per':?0,?'spd':?5,?})if?not?isinstance(result,?dict):with?open('auido.mp3',?'wb')?as?file:file.write(result)filepath?=?eval(repr(sys.path[0]).replace('\\',?'/'))?+?'//auido.mp3'playsound(filepath)try:while?True:ret,?frame?=?video_capture.read()small_frame?=?cv2.resize(frame,?(0,?0),?fx=0.25,?fy=0.25)rgb_small_frame?=?small_frame[:,?:,?::-1]if?process_this_frame:face_locations?=?face_recognition.face_locations(rgb_small_frame)face_encodings?=?face_recognition.face_encodings(rgb_small_frame,?face_locations)face_names?=?[]for?face_encoding?in?face_encodings:matches?=?face_recognition.compare_faces(known_face_encodings,?face_encoding)name?=?"Unknown"face_distances?=?face_recognition.face_distance(known_face_encodings,?face_encoding)best_match_index?=?np.argmin(face_distances)if?matches[best_match_index]:speak("識別到人臉,開始詢問暗號,請回答接下來我說的問題")time.sleep(1)speak("天王蓋地虎")error?=?1?/?0name?=?known_face_names[best_match_index]face_names.append(name)process_this_frame?=?not?process_this_framefor?(top,?right,?bottom,?left),?name?in?zip(face_locations,?face_names):top?*=?4left?*=?4right?*=?4bottom?*=?4font?=?cv2.FONT_HERSHEY_DUPLEXcv2.rectangle(frame,?(left,?top),?(right,?bottom),?(0,?0,?255),?2)cv2.rectangle(frame,?(left,?bottom?-?35),?(right,?bottom),?(0,?0,?255),?cv2.FILLED)cv2.putText(frame,?name,?(left?+?6,?bottom?-?6),?font,?1.0,?(255,?255,?255),?1)cv2.imshow('Video',?frame)if?cv2.waitKey(1)?&?0xFF?==?ord('q'):break except?Exception?as?e:print(e) finally:video_capture.release()cv2.destroyAllWindows()

這里有一點需要注意,由于playsound播放音樂的時候會一直占用這個資源,所以播放下一段音樂的時候會報錯,解決方法是修改~\Python37\Lib\site-packages下的playsound.py文件,找到如下代碼

打造電腦版人臉屏幕解鎖神器

在sleep函數下面添加winCommand('close', alias)這句代碼,保存下就可以了。運行發現可以正常將兩句話都說出來。那么說出來之后就要去監聽了,我們還要打包一個函數。

def?record():import?waveimport?jsonimport?pyaudiofrom?aip?import?AipSpeechAPP_ID?=?''API_KEY?=?''SECRET_KEY?=?''client?=?AipSpeech(APP_ID,?API_KEY,?SECRET_KEY)CHUNK?=?1024FORMAT?=?pyaudio.paInt16CHANNELS?=?1RATE?=?8000RECORD_SECONDS?=?3WAVE_OUTPUT_FILENAME?=?"output.wav"p?=?pyaudio.PyAudio()stream?=?p.open(format=FORMAT,?channels=CHANNELS,?rate=RATE,?input=True,?frames_per_buffer=CHUNK)print("*?recording")frames?=?[]for?i?in?range(0,?int(RATE?/?CHUNK?*?RECORD_SECONDS)):data?=?stream.read(CHUNK)frames.append(data)print("*?done?recording")stream.stop_stream()stream.close()p.terminate()wf?=?wave.open(WAVE_OUTPUT_FILENAME,?'wb')wf.setnchannels(CHANNELS)wf.setsampwidth(p.get_sample_size(FORMAT))wf.setframerate(RATE)wf.writeframes(b''.join(frames))def?get_file_content():with?open(WAVE_OUTPUT_FILENAME,?'rb')?as?fp:return?fp.read()result?=?client.asr(get_file_content(),?'wav',?8000,?{'dev_pid':?1537,?})result?=?json.loads(str(result).replace("'",?'"'))return?result["result"][0]

將識別到人臉后的代碼修改成如下

if?matches[best_match_index]:speak("識別到人臉,開始詢問暗號,請回答接下來我說的問題")time.sleep(1)speak("天王蓋地虎")flag?=?Falsefor?times?in?range(0,?3):content?=?record()if?"小雞燉蘑菇"?in?content:speak("暗號通過")flag?=?Truebreakelse:speak("暗號不通過,再試一次")if?flag:print("解鎖")else:print("發送郵件并將壞人人臉圖片上傳!")error?=?1?/?0name?=?known_face_names[best_match_index]

運行看看效果,回答電腦小雞燉蘑菇,電腦回答暗號通過。這樣功能就基本上完成了。

打造電腦版人臉屏幕解鎖神器

結語

至于發送郵件的功能和鎖屏解鎖的功能我就不一一去實現了,我想這應該難不倒在座的各位吧。鎖屏功能可以HOOK讓鍵盤時間無效化,然后用窗口再覆蓋整個桌面即可,至于郵箱發送網上文章很多的。

? ???精 彩 文 章?

  • 推薦一套高效的碼字工具

  • 提高github下載速度的方法「100%有效」可達到2MB/s

  • 查閱arXiv論文新神器,一行代碼比較版本差別,Github新開源!

END 最后說個題外話,相信大家都知道視頻號了,隨著灰度范圍擴大,越來越多的小伙伴都開通了視頻號。小詹也開通了一個視頻號,會分享互聯網那些事、讀書心得與副業經驗,歡迎掃碼關注,和小詹一起向上生長!「沒有開通發布權限的盡量多互動,提升活躍度可以更快開通哦」

總結

以上是生活随笔為你收集整理的再也不怕别人动电脑了!用Python实时监控的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美日韩少妇 | 四虎精品在永久在线观看 | 91精品人妻一区二区 | 日韩精品久久久久久久电影99爱 | 网友自拍咪咪爱 | 久久岛国| 日韩激情在线播放 | 欧美第一色 | 一边摸内裤一边吻胸 | 手机在线看片 | 国产欧美在线精品日韩 | 国产成人一区二区三区小说 | 国产青青草视频 | 欧美日韩成人免费 | 一级淫片免费看 | 97久久人国产精品婷婷 | 黄色大片儿 | 国内精品99 | 欧美高潮视频 | 第一毛片 | 国产二区视频 | 国产色av| 超碰97最新 | 亚洲一二三四五 | 黄色精品一区 | 日本免费福利视频 | 2021狠狠干| 泰坦尼克号3小时49分的观看方法 | 一级黄色片在线播放 | 欧美性视频一区二区 | 国产精品av在线播放 | 苏晴忘穿内裤坐公交车被揉到视频 | 精品人妻一区二区三区蜜桃视频 | 欧美美女视频 | 蜜桃av乱码一区二区三区 | 精品少妇人妻av免费久久久 | www.婷婷| 天天操夜夜草 | 国产不卡一区二区视频 | 男女做爰猛烈高潮描写 | 黑人欧美一区二区三区 | 日本污视频在线观看 | 欧美肥老妇视频 | 好男人资源| 国产精品日韩一区二区 | 亚洲综合免费观看高清完整版在线 | 精品视频区 | av2018| 日批在线视频 | 亚洲综合福利 | 成人三级做爰av | 亚色网站| 黄a在线 | 国产精品一区二区av日韩在线 | 成人羞羞网站 | 日本亚洲国产 | 在线97| 精品91av| 中文字幕视频观看 | 国产综合亚洲精品一区二 | 亚洲天堂小视频 | 蜜桃视频导航 | 操欧美女| 国产另类精品 | 尤物视频官网 | 久久另类ts人妖一区二区 | 婷婷色激情 | 在线观看超碰 | 免费看黄色三级 | 亚洲最黄网站 | 欧美日韩视频一区二区 | 男女洗澡互摸私密部位视频 | 国产精品成人免费一区久久羞羞 | 视频免费在线 | 色呦呦在线免费观看 | 牛牛av在线 | 亚洲精品www久久久 一级aaa毛片 | 久青草国产在线 | 亚洲精品一区二区二区 | 一区二区三区日韩电影 | 国产精品一区二区三区在线免费观看 | 88av在线播放 | 中文字幕黑人 | 国产精品视频久久久久久 | 深爱开心激情网 | 亚洲最大毛片 | 国产又黄又大又粗视频 | a级一级黄色片 | 亚洲香蕉中文网 | 欧美天天影院 | av伊人久久| 一边顶弄一边接吻 | 日本不卡一区二区三区视频 | 欧美 日韩 国产 精品 | 午夜大片 | 日韩在线一区视频 | 大地资源在线观看免费高清版粤语 | 91精品国产一区二区三区香蕉 | 自拍偷拍精品 |