Я делаю окончательный проект о распознавании жестов рук в реальном времени с использованием Android и opencv. Я делаю на нем сегментацию кожи, конвертируя изображение из кадра камеры (RGB) в цвет YCrCb и получая значение Cr и Cb (диапазон) из прямоугольника, который направлен на цвет кожи (похоже на палитру цветов). Теперь я хочу доказать это (сегментацию кожи), используя функцию порогового значения с помощью кнопки меню параметров на моем телефоне Android. Но это не работа, никакого эффекта. Что я должен делать ? Это мой пороговый код:
case MainActivity.VIEW_MODE_THRES:
mask = rgba.clone();
rgbaInnerWindow = rgba.submat(top, top + height, left, left + width);
Imgproc.cvtColor(rgbaInnerWindow, rgbaInnerWindow, Imgproc.COLOR_BGR2YCrCb);
Imgproc.cvtColor(mask, mask, Imgproc.COLOR_BGR2GRAY);
Core.inRange(rgbaInnerWindow, new Scalar(0, Cr_low, Cb_low), new Scalar (255, Cr_high, Cb_high), mask);
image = mask.clone(); //save the image segmentation output
Imgproc.blur(mask, mask, new Size(5,5));
Imgproc.threshold(mask, mask, 13, 255, Imgproc.THRESH_OTSU);
Core.inRange(mask, new Scalar(30), new Scalar(255), mask);
rgbaInnerWindow.release();
mask.release();
break;
mask
до и после пороговой обработки. - person cyriel   schedule 07.05.2015inRange
. Он должен бытьCV_8U
и того же размера, что и ввод дляinRange( )
, то есть того же размера, что иrgbaInnerWindow
. Используя клон, вы выполняете дополнительную работу (копируете исходные данные) и делаетеmask
больше, чем область, на которой вы выполняетеinRange
. Тот факт, что оно больше, чем исходное изображение, может быть проблемой. Разве вы не можете просто выделитьmask
в качестве новой матрицы CV_8U подходящего размера? - person Dave Durbin   schedule 08.05.2015