急いで、マーク!リーダーが密かにあなたの後ろに現れることを恐れる必要はもうありません、あなたは最強の魚捕手です

あなたが仕事で釣りをしているとき、リーダーはいつもあなたの後ろにこっそり現れます。例えば、Xiaobianはかつて「Qingyin」をこっそり見て捕まえられました。今日はPythonを使用して、この魚を捕まえるルーチンを解読します。主なアイデアは、opencvを使用してコンピューターのカメラを呼び出し、顔を検出して比較することです。リーダーが後ろに現れたら、指定されたアプリケーションを開いて、問題のある海域で魚を釣ります。

モジュールをインストールします

プログラムを作成する前に、opencvによって呼び出されるカメラモジュールとface_locations顔認識モジュールをインストールする必要があります。

# opencv 模块
pip3 insatll opencv-python
# face_locations 模块
pip3 install cmake
pip3 install face_recognition

学習に問題があり、Pythonの学習およびコミュニケーション環境を見つけたい場合は、Pythonスカートに参加し、エディターに従って、「01」と個人的に書き込んでスカートに入り、Python学習資料を受け取ることができます。これにより、多くの節約になります。時間と多くの困難に遭遇することを減らします。

顔認識

まず、リーダーの顔をエンコードしてメモリに入れ、いつでもカメラでキャプチャされた顔認識とエンコードを比較します。

たとえば、下の画像の顔のエンコード

import face_recognition

# 加载图片
pic_boss = face_recognition.load_image_file("/Users/xx/Desktop/face/0.png")
# 得到面部编码
boss_face_encoding = face_recognition.face_encodings(pic_boss)[0]

結果の例

[-0.02630499  0.12300251  0.01698755  0.01275834 -0.07418888 -0.00981654
 -0.03014973 -0.16349442  0.11407443 -0.03254088  0.26810074 -0.10167226
 -0.15427223 -0.11180711  0.01873804  0.18030289 -0.14980686 -0.12194286
 -0.02620432 -0.03438358  0.04720668  0.05182001  0.009987    0.09340413
 -0.11347414 -0.26094455 -0.07678577 -0.09128669  0.08928929 -0.07264765
 -0.11346096  0.1254302  -0.20916753 -0.10639326  0.09938065  0.05473833
 -0.04935627 -0.06184902  0.17554277 -0.02231439 -0.19398358  0.01744412
  0.10445927  0.26399308  0.21656345  0.05588599  0.00760998 -0.13855973
  0.12407181 -0.09017442  0.09778374  0.11776066  0.08498169  0.07626694
 -0.01237833 -0.20856641  0.02468708  0.06579788 -0.12179989  0.02987257
  0.1338616  -0.07621925  0.01559527 -0.03452411  0.18915619  0.01698355
 -0.04450341 -0.2167782   0.09793964 -0.11409818 -0.10012487  0.13745219
 -0.17124982 -0.15017164 -0.34856451 -0.01826046  0.41654593  0.09037441
 -0.21255262  0.04289294  0.01760755 -0.01859214  0.20364219  0.14642054
  0.00619181 -0.02451363 -0.15138477  0.00500458  0.25368348 -0.02767867
 -0.09737059  0.17870165 -0.02200082  0.03460512  0.03690759  0.06052291
 -0.0686012   0.04330266 -0.15649761 -0.09057935  0.00870521  0.04586265
 -0.04279764  0.18815981 -0.15697879  0.17292421  0.03271531  0.08370531
 -0.04779428 -0.05095051 -0.08721299  0.01937558  0.10537415 -0.21216688
  0.16163379  0.07646587  0.09025833  0.08259746  0.08811771  0.06535679
 -0.01029789 -0.06432205 -0.25512969 -0.03111095  0.12503427 -0.02948561
  0.15236887  0.03259711]

カメラを呼び出す

cv2.VideoCapture(0)メソッドを使用してカメラを上げ、カメラの各フレームで顔のエンコードを実行し、最後にface_recognition.compare_faces()メソッドを使用して顔を比較します。

import face_recognition
import cv2
import os
import time

# 调用摄像头,外部摄像头为:1
cap = cv2.VideoCapture(0)

while True:

    # 按帧读取视频
    # 其中ret是布尔值,如果读取帧是正确的则返回 True,
    # frame就是每一帧的图像
    ret, frame = cap.read()
    
    # 进行面部编码
    face_locations = face_recognition.face_locations(frame)
    face_encodings = face_recognition.face_encodings(frame, face_locations)

    for face_encoding in face_encodings:
        # 人脸对比
        results = face_recognition.compare_faces([boss_face_encoding], face_encoding)

        if results[0]:
            print("boss来了,快打开其他应用")

            os.system('open /Applications/PyCharm.app')
            time.sleep(300)

cv2.VideoCapture(0)メソッドは次のことを報告することに注意してください。VSCodeのターミナルで呼び出されたときにトラップを中止する:6エラー。

システムに付属の端末で実行する場合、このような問題はありません。

総括する

仕事で釣りができるときは上手に釣りをし、激しく戦うべきときは決して釣りをしないでください。

コード取得方法

自分で作成したPython学習グループ:705933274を引き続きお勧めします。全員がPythonを学習しています。Pythonを学習したい、または学習している場合は、ぜひ参加してください。誰もがソフトウェア開発パーティーであり、最新のPythonの高度な資料のコピーや、2021年に私が編集したゼロベースの教育など、随時(Pythonソフトウェア開発に関連するもののみ)。高度でPythonに興味のある友人を歓迎します。

 

おすすめ

転載: blog.csdn.net/pyjishu/article/details/114877720