【问题标题】:Detect eye movement in a thermal video using python opencv使用 python opencv 检测热视频中的眼球运动
【发布时间】:2017-06-13 04:18:00
【问题描述】:

如何在眼睛闭合时检测眼球运动。我能够通过找到最热点然后在该点周围画一个圆圈来检测热视频中的闭眼区域。通过反复试验,我大致能够估计眼角坐标,然后我裁剪出眼睛区域[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]: https://i.stack.imgur.com/jayfp.jpg = 在单帧中检测到眼睛

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

【问题讨论】:

  • 也许使用睁眼和闭眼的eigenimages,看看它是否在它们之间反弹?
  • 其实眼睑一直是闭着的,我要计算睡眠状态下的眼球运动,即验证眼球是否在闭合的眼睑内移动。
  • 嗯,我对睡觉时的眼球运动知之甚少。你在屏幕上看到了吗?如何?这应该是您必须回答的第一个问题:“我自己该怎么做”。
  • 很抱歉没有早点提及。在热成像视频中,即使眼睑闭合,您也可以看到眼球运动。但我不知道如何检测这种快速移动。
  • 老实说,我看不到那个 gif 中的眼球运动。

标签: image python-2.7 opencv image-processing


【解决方案1】:

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

【讨论】:

  • 当面部有一点倾斜时,热点会发生变化,因为有两个具有相同像素值的眼角分别眼睛区域周围的矩形移动。而你提出的方法给了我脸部的运动,而不是眼睛的运动,它计算了脸部的变化率。
猜你喜欢
  • 2017-05-11
  • 2015-05-25
  • 1970-01-01
  • 1970-01-01
  • 2017-03-23
  • 2018-05-02
  • 1970-01-01
  • 2011-05-02
  • 2017-08-18
相关资源
最近更新 更多