通过人脸识别,操作鼠标跟随人脸(有啥用自己想象)

需要的库

pip install opencv-python
pip install xlib
pip install pyautogui

import cv2 as cv
import pyautogui


def face_detect_demo(image):
    gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
    face_detector = cv.CascadeClassifier("./haarcascade_frontalface_default.xml")
    faces = face_detector.detectMultiScale(gray, scaleFactor=1.2, minNeighbors=2, minSize=(50, 50))

    for x, y, w, h in faces:
        cv.rectangle(image, (x, y), (x + w, y + h), (0, 0, 255), 2)
        pyautogui.moveTo(x + w / 2, y + h / 2)
    cv.imshow("result", image)


capture = cv.VideoCapture(0)  # 其中的0表示电脑中的第一个相机
cv.namedWindow("result", cv.WINDOW_AUTOSIZE)
while (True):
    # 按帧读取视频,ret,frame是获cap.read()方法的两个返回值。其中ret是布尔值,如果读取帧是正确的则返回True,如果文件读取到结尾,它的返回值就为False。frame就是每一帧的图像,是个三维矩阵。
    ret, frame = capture.read()
    # cv.flip函数表示图像翻转,沿y轴翻转, 0: 沿x轴翻转, <0: x、y轴同时翻转
    frame = cv.flip(frame, 1)
    face_detect_demo(frame)
    # waitKey()方法本身表示等待键盘输入,参数是1,表示延时1ms切换到下一帧图像,对于视频而言;
    c = cv.waitKey(2)
    if c == 27:  # 当键盘按下‘ESC’退出程序
        # 释放摄像头资源
        capture.release()
        break

# cv.waitKey(0)参数为0,如cv2.waitKey(0)只显示当前帧图像,相当于视频暂停,;
# cv.waitKey(0)
cv.destroyAllWindows()  # 作用是能正常关闭绘图窗口

执行后鼠标就会自动的锁定到图像识别到的人脸。

嘿嘿如果移动过去之后自动点击。那。。。。。

模型文件github自取 地址https://github.com/opencv/opencv/blob/master/data/haarcascades/haarcascade_frontalface_default.xml

你可能感兴趣的:(小工具,python,udp,tcp/ip)