Mam aplikację na Androida, na której użytkownik robi sobie zdjęcie aparatem przednim, a następnie zdjęcie jest przesyłane na mój serwer. Zauważyłem, że wiele zdjęć dociera do mojego serwera zbyt ciemno (czasem prawie niemożliwe, aby było jasne, że widzę twarz użytkownika).Jak wykrywać ciemne zdjęcia w Androidzie
Chciałbym odfiltrować takie zdjęcia i pokazać powiadomienia (np. "Zdjęcie jest zbyt ciemne.) Zrób jeszcze jedno zdjęcie") do użytkownika po stronie aplikacji. Jak mogłem wykonać takie zadanie w Androidzie?
EDIT:
I odkryli, w jaki sposób obliczyć jasność dla jednego piksela (dziękuję do tej odpowiedzi: https://stackoverflow.com/a/16313099/2999943):
private boolean isPixelColorBright(int color) {
if (android.R.color.transparent == color)
return true;
boolean rtnValue = false;
int[] rgb = {Color.red(color), Color.green(color), Color.blue(color)};
int brightness = (int) Math.sqrt(rgb[0] * rgb[0] * .299 + rgb[1]
* rgb[1] * .587 + rgb[2] * rgb[2] * .114);
if (brightness >= 200) { // light color
rtnValue = true;
}
return rtnValue;
}
Ale nadal nie mam jasnego pojęcia jak aby określić jasność całego obrazu "status". Jakieś sugestie?
Jeśli można określić jasność piksela przypalić, dlaczego nie analizować wszystkie piksele w taki sam sposób, aby uzyskać średnią wartość, i używać? – JonasCz