2

OpenCV を使用してまばたきを検出する方法の C++ の例をいくつか見つけました。

残念ながら、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からEyesに変更しました。それで、うまくいきます... 目を検出します。

ただし、目の位置以上のものを検出する必要があります。ユーザーのまばたきを検出する必要があります。上記のコードを見ましたが、カスケードを使用して目を検出するため、OpenCV の顔検出コードで使用する方法がわかりません。上記の方法はカスケードを使用していません。では、どうすれば使用できますか?

OpenCV を使用して瞬きを確認する方法についてのアイデアはありますか?

Google とここでこの情報をほぼ 1 週間探していますが、Android で動作する情報が見つかりません。=(

どんな助けでも大歓迎です!

4

4 に答える 4

1

目を検出できれば、消えてからすぐに再び現れる目を探すことができます。これはまばたきのように見えます。口を検出できれば、ほぼ同じ場所に残っていることも確認できます。

于 2012-11-13T11:11:33.810 に答える
0

C ++に点滅検出関数がある場合は、Androidから関数へのネイティブ関数(JNI)呼び出しを使用して、Javaコードへの検出に応じてブール値のTrueまたはfalseを返すことができます。

于 2012-11-13T10:59:44.977 に答える