Я пытаюсь создать приложение в Android Studio с использованием OpenCV, которое в основном смотрит на изображение группы точек, выделяет все яркие точки и затем подсчитывает их.Форма точек не соответствует, но цвет точек должен быть белым с черным фоном.
Я начинаю с загрузки изображения, подобного этому:
Затем я беру растровое изображение и конвертирую его в оттенки серого.Затем я проверяю, что значения серого находятся в пределах диапазона, и возвращаю растровое изображение двоичных значений.Возвращенное изображение выглядит следующим образом:
Я безуспешно пробовал несколько разных способов подсчитать эти точки, включая использование Imgproc.findContours и следование учебным пособиям.например этот , но я не ищу конкретную форму.Это в основном просто группа от 1 до 50 пикселей за раз со значениями rgb 225, 255, 255 и неправильной формы.Как можно подсчитать эти отдельные фигуры?
Вот моя часть кода, предназначенная для обработки изображений, часть countNonZero просто для того, чтобы дать мне представление о том, сколько существует белых пикселей, что составляет 179 для этого конкретного изображения
public void convertToGray(View v){
int whitePix;
Mat Rgba = new Mat();
Mat grayMat = new Mat();
Mat dots = new Mat();
BitmapFactory.Options o = new BitmapFactory.Options();
o.inDither=false;
o.inSampleSize=4;
int width = imageBitmap.getWidth();
int height = imageBitmap.getHeight();
grayBitmap = Bitmap.createBitmap(width,height,Bitmap.Config.RGB_565);
//bitmap to MAT
Utils.bitmapToMat(imageBitmap,Rgba);
Imgproc.cvtColor(Rgba,Rgba,Imgproc.COLOR_RGB2GRAY);
Core.inRange(Rgba,scalarLow,scalarHigh,grayMat);
whitePix = Core.countNonZero(grayMat);
Utils.matToBitmap(grayMat,grayBitmap);
MediaStore.Images.Media.insertImage(getApplicationContext().getContentResolver(), grayBitmap, "Result", "Descrip");
mImageView.setImageBitmap(grayBitmap);
}
Эта функция вызывается при нажатии кнопки после загрузки изображения в приложение.