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 で動作する情報が見つかりません。=(
どんな助けでも大歓迎です!