Bom dia, preciso de uma ajuda,
Preciso pegar a tonalidade das questões utilizando o Java Swing, alguém tem uma ideia de como fazer, gostaria do tipo vc segurar o mouse ele pintar de azul e depois definir a quantidade de linhas e colunas daquela seleção, e depois com os círculos adquirir a tonalidade de cada resposta, para saber a questão assinalada
Isso não é trivial de se implementar.
Dê uma olhada nos métodos das classes BufferedImage e Graphics2D.
De repente utilizar a API OpenCV para reconhecimento de padrões…
Tem alguma forma de pegar a tonalidade do quadrado? em vez da pixel
Supondo que sua imagem é um objeto do tipo BufferedImage e que você tem um objeto do tipo Rectangle que representa o quadro do qual você quer calcular a tonalidade.
Você pode obter um objeto BufferedImage correspondente à esse quadro da seguinte forma:
BufferedImage selecao = imagem.getSubimage(quadro.x, quadro.y, quadro.width, quadro.height);
Agora que você tem um objeto correspondente à área da qual quer computar a tonalidade, você pode calcular dessa forma: Color tonalidade = getTonalidade(selecao);
Abaixo está a implementação do método getTonalidade, se você observar o código, esse método obtém os pixels do quadro selecionado através do método getPixels e em seguida calcula a tonalidade, que nada mais é do que a média dos pixels do quadro selecionado:
Método getTonalidade:
private Color getTonalidade(BufferedImage imagem) {
int[] pixels = getPixels(imagem);
int r = 0;
int g = 0;
int b = 0;
int count = pixels.length;
for (int i = 0; i < count; i++) {
Color cor = new Color(pixels[i]);
r += cor.getRed();
g += cor.getGreen();
b += cor.getBlue();
}
r /= count;
g /= count;
b /= count;
return new Color(r, g, b);
}
Método getPixels:
private int[] getPixels(BufferedImage imagem) {
int width = imagem.getWidth();
int height = imagem.getHeight();
int size = width * height;
PixelGrabber pixelGrabber = new PixelGrabber(imagem, 0, 0, width, height, new int[size], 0, width);
pixelGrabber.startGrabbing();
return (int[]) pixelGrabber.getPixels();
}
1 curtida