Image 使用python opencv检测热视频中的眼球运动

Image 使用python opencv检测热视频中的眼球运动,image,python-2.7,opencv,image-processing,Image,Python 2.7,Opencv,Image Processing,如何检测眼睛关闭时的运动。我能够在热视频中检测到闭眼区域,找到最热点,然后围绕该点画一个圆圈。通过反复试验,我大致能够估计眼角坐标,然后从视频中裁剪出眼睛区域[2]。下一个任务是检测它的移动 import numpy as np import cv2 import scipy from matplotlib import pyplot as plt from PIL import Image from collections import Counter blur_radius = 1.0 th

如何检测眼睛关闭时的运动。我能够在热视频中检测到闭眼区域,找到最热点,然后围绕该点画一个圆圈。通过反复试验,我大致能够估计眼角坐标,然后从视频中裁剪出眼睛区域[2]。下一个任务是检测它的移动

import numpy as np
import cv2
import scipy
from matplotlib import pyplot as plt
from PIL import Image
from collections import Counter
blur_radius = 1.0
threshold = 50


video = cv2.VideoCapture('12.avi')
while True:
        ret, frame = video.read()
        frame = frame[:,1:600]
        gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
        gray = cv2.GaussianBlur(gray, (15,15), 0)
        (minVal, maxVal, minLoc, maxLoc) = cv2.minMaxLoc(gray)
        image = frame
        (x,y) = maxLoc
        cv2.circle(image, maxLoc, 15, (255, 0, 0), 2)
        cv2.rectangle(image,(maxLoc),(390,190),(0,255,0),2)
        roi = frame [y:190,x:390]
        try:
                roi = cv2.resize(roi, None, fx=4, fy=4, interpolation=cv2.INTER_AREA)
                cv2.imshow("Eye",roi)
                cv2.imshow("Eyecorner", image)
        except:
                print''

        if cv2.waitKey(1) & 0xFF == ord('q'):
                break

video.release()
cv2.destroyAllWindows()
[1] [2]

[1] :=在单个帧中检测到眼睛


[2] :=热视频中被裁剪的眼睛区域

既然你已经有了包含眼睛和眼角坐标的热点,你不能简单地测量热点中心和每帧两个角之间的中心点之间的距离并检查其变化率吗?你没有提到测量有多精确,但是如果它们100%正确并且头部不会移动太多(透视图不会改变),那么它应该可以工作。否则,你需要另一种方法来确定参考系。

也许可以使用睁眼和闭眼的特征图像,看看它是否在它们之间反弹?事实上,眼睑一直是闭着的,我必须计算睡眠状态下的眼球运动,也就是验证眼球是否在闭着的眼睑内移动。我对睡眠时的眼球运动知之甚少。你在屏幕上看到了吗?怎么用?这应该是你必须回答的第一个问题:“我自己怎么能做到呢?”很抱歉,我没有早些提到这一点。在热视频中,即使眼睑闭合,也可以看到眼球的运动。但我不知道如何检测这种快速移动。老实说,我在gif中看不到眼睛的移动。当脸部稍微倾斜时,热点会发生变化,因为有两个眼角分别具有相同的像素值。眼睛区域周围的矩形会移动。你提出的方法给了我脸部的运动,而不是眼睛,它计算出脸部的变化率。