如何使用 OpenCV 和 Python 通过检测到的脸部和眼睛来移动鼠标

2024-04-20

我已经成功地通过在脸部和眼睛周围绘制循环来检测它们,并且在 Python 教程的帮助下工作得很好Python教程 https://docs.python.org/3.5/tutorial/index.html & 学习 OpenCV http://www.learnopencv.com/delaunay-triangulation-and-voronoi-diagram-using-opencv-c-python/。现在我想让鼠标(光标)在脸部移动和眼睛关闭/打开时移动以进行鼠标单击。 (Python 和 OpenCV)。请帮助我提供更多有关如何使其发挥作用的想法。 谢谢。

检查下面的代码:

import cv2
import sys
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml')
video_capture = cv2.VideoCapture(0)
while True:
    ret, img = video_capture.read()
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    Face = face_cascade.detectMultiScale(gray, 1.3, 5)
    for (x,y,w,h) in Face:
         cv2.rectangle(img,(x,y),(x+w,y+h),(0,0,255),2)
         roi_gray = gray[y:y+h, x:x+w]
         roi_color = img[y:y+h, x:x+w]
         eyes = eye_cascade.detectMultiScale(roi_gray)
         for (ex,ey,ew,eh) in eyes:
             cv2.rectangle(roi_color,(ex,ey), (ex+ew,ey+eh), (0,255,0), 2)
   # Display the resulting frame
   cv2.imshow('Face and Eye Detected', img)
   if cv2.waitKey(1) & 0xFF == ord('q'):
        break
#cv2.waitKey(0)
video_capture.release()
cv2.destroyAllWindows()    

如果您在 Windows 环境中工作,您正在寻找的是 python win32api 中的 SetCursorPos 方法。使用:

import win32api
import cv2
import sys
...
for (ex,ey,ew,eh) in eyes:
    win32api.SetCursorPos((ex,ey))
    cv2.rectangle(roi_color,(ex,ey), (ex+ew,ey+eh), (0,255,0), 2)

这会将光标设置到矩形的左上角。如果您希望将光标移动到矩形的中心,请使用:

win32api.SetCursorPos((ex+ew/2,ey+eh/2))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 OpenCV 和 Python 通过检测到的脸部和眼睛来移动鼠标 的相关文章

随机推荐