Tôi có ứng dụng Android, nơi người dùng chụp ảnh của chính anh ấy bằng camera trước và sau đó ảnh đang được tải lên máy chủ của tôi. Tôi nhận thấy rằng nhiều hình ảnh đến máy chủ của tôi quá tối (đôi khi gần như không thể rõ ràng nhìn thấy khuôn mặt người dùng).Cách phát hiện ảnh tối trong Android
Tôi muốn lọc các ảnh đó và hiển thị thông báo (ví dụ: "Ảnh quá tối. Chụp thêm một ảnh") cho người dùng ở phía ứng dụng. Làm thế nào tôi có thể hoàn thành nhiệm vụ như vậy trong Android?
EDIT:
tôi đã tìm ra cách để tính toán độ sáng cho một pixel (cảm ơn đối với câu trả lời này: 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;
}
Nhưng tôi vẫn không có ý tưởng rõ ràng như thế nào để xác định toàn bộ độ sáng của hình ảnh "trạng thái". Bất kỳ đề xuất?
Nếu bạn có thể xác định độ sáng cho một điểm ảnh singe, tại sao không phân tích tất cả các pixel trong cùng một cách để có được giá trị trung bình, và sử dụng? – JonasCz