Необходимо выделить на фотографии объекты по цветам. Как это можно сделать
(без сторонних библиотек, типа OpenCV)? Что нужно проверять в первой и второй точке, чтоб правильно проверить цвет?
Я брал в первой точке (5х5) среднее значение серого (alpha) и доминирующий цвет:
double R = average(red);
double G = average(green);
double B = average(blue);
int alpha = (int) (R * 0.299 + G * 0.587 + B * 0.114);
String r = "red#"+R, g="green#"+G, b="blue#"+B;
String [] colors = {r,g,b,"currentColor", "alpha"};
Tools tools = new Tools();
colors = tools.sortRGB(colors);
String [] terms = colors[0].split("#");
double currentColor=0;
switch (terms[0]) {
case "red" : currentColor=(R+G+B)/R; break;
case "green" : currentColor=(R+G+B)/G; break;
case "blue" : currentColor=(R+G+B)/B; break;
}
colors[3] = Double.toString(currentColor);
colors[4] = Integer.toString(alpha);
return colors;
Во второй точке берутся аналогичные параметры и сравниваются с первой точкой. Если "true" - это один массив одного цвета. "false" - создаётся новый массив для другого цвета и все действия повторяются. Работает условие while (color==true)
double digression=0;
switch (color1[0]) {
case "red" : digression=(R+G+B)/R; break;
case "green" : digression=(R+G+B)/G; break;
case "blue" : digression=(R+G+B)/B; break;
}
if(alpha1==alpha2 || alpha1-alpha2>-5 && alpha1-alpha2<5)
return true;
if (currentColor-digression<0.5 && currentColor-digression>-0.5) {
return true;
Такой "трюк" работает
c простыми изображениями, но не
с фотографиями. Может я не по тем параметрам сравниваю? Как правильно? Как выбрать объекты на фотографии по цветам?