我在C ++中找到了一些如何使用OpenCV 检测一眨眼的例子。
Unhapilly很难为Android找到相同的东西。
我发现了这个:
case Sample2NativeCamera.VIEW_MODE_HOUGH_CIRCLES:
capture.retrieve(mRgba, Highgui.CV_CAP_ANDROID_COLOR_FRAME_RGBA);
Imgproc.cvtColor(mRgba, mGray, Imgproc.COLOR_RGBA2GRAY, 4);
// doing a gaussian blur prevents getting a lot of small false circles
Imgproc.GaussianBlur(mGray, mGray, new Size(5, 5), 2, 2);
// the lower this figure the more spurious circles you get
// 50 looks good in CANNY, but 100 is better when converting that into Hough circles
iCannyUpperThreshold = 100;
Imgproc.HoughCircles(mGray, mIntermediateMat, Imgproc.CV_HOUGH_GRADIENT, 2.0, mGray.rows() / 8,
iCannyUpperThreshold, iAccumulator, iMinRadius, iMaxRadius);
if (mIntermediateMat.cols() > 0)
for (int x = 0; x < Math.min(mIntermediateMat.cols(), 10); x++)
{
double vCircle[] = mIntermediateMat.get(0,x);
if (vCircle == null)
break;
pt = new Point(Math.round(vCircle[0]), Math.round(vCircle[1]));
radius = (int)Math.round(vCircle[2]);
// draw the found circle
Core.circle(mRgba, pt, radius, colorRed, iLineThickness);
// draw a cross on the centre of the circle
DrawCross (mRgba, pt);
}
if (bDisplayTitle)
ShowTitle ("Hough Circles", 1);
break;
但我不知道如何在我的OpenCV示例代码中使用它。我有所有OpenCV示例代码。我正在玩OpenCV - 人脸检测。
我刚刚从Frontal Face改变了级联。 因此,它有效......它会检测到眼睛。
然而,我需要检测的不仅仅是眼睛的位置。 我需要检测用户何时眨眼。我看到上面的代码,但我不知道如何在我的OpenCV人脸检测代码中使用它,因为它使用级联来检测眼睛。上述方法不使用级联。那么,我该如何使用呢?
关于如何使用OpenCV检查眨眼的任何想法?
我差不多一周在谷歌和这里寻找这些信息,但我找不到适用于Android的信息。 =(
欢迎任何帮助!
答案 0 :(得分:1)
如果你可以检测到眼睛,那么你可以寻找眼睛消失然后很快再现。这看起来像眨眼。如果你能检测到嘴巴,那么你可以确保它仍然保持在大致相同的位置。
答案 1 :(得分:1)
我不确切知道你的实施方式,但这段代码有助于识别圈子,在这种情况下对于学生来说。您可以使用Viola Jones获得眼睛roi(感兴趣的区域),应用Canny探测器,然后使用Hough Transformation查找圆圈(睁眼)或直线(闭眼)。
一些有用的链接:
Viola Jones:http://docs.opencv.org/modules/objdetect/doc/cascade_classification.html
霍夫变换:http://docs.opencv.org/doc/tutorials/imgproc/imgtrans/hough_lines/hough_lines.html
Canny探测器:http://docs.opencv.org/doc/tutorials/imgproc/imgtrans/canny_detector/canny_detector.html
另一种方法是使用匹配模板,例如http://www.technolabsz.com/2013/05/eye-blink-detection-using-opencv-in.html
答案 2 :(得分:1)
谷歌发布了针对Android的 FaceDetectorApi(),它为我们提供了双眼开启的概率,使用它我们可以检测到眨眼,这是我已经完成的项目实施,它实时工作https://github.com/murali129/Eye-blink-detector
答案 3 :(得分:0)
如果你在c ++中有blink检测功能,你可以使用对android函数的Native函数(JNI)调用,而不是根据对java代码的检测返回一个布尔值True或false。