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

时间:2017-01-27 13:08:52

标签: 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
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 [1] 2 [2]

[1]:https://i.stack.imgur.com/jayfp.jpg =在单帧中检测到眼睛

[2]:https://i.stack.imgur.com/MgEe7.jpg =来自热视频的裁剪眼睛区域

1 个答案:

答案 0 :(得分:0)

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