Converter int[] em double [][]

3 respostas
T

Como eu posso converter vários arrays de int[] em um array de double[][]?

3 Respostas

A

Na verdade você não precisa converter nada, pois como double é maior que int, int é perfeitamente aceito em double.

Agora depende de quantos vetores de int você pretende atribuir em uma matriz double, pois é necessário especificar o tamanho.

Já fez alguma coisa, poste pra gente ver.

T

Esse é o problema eu não tenho o tamanho exato da matriz.

Estou passando várias imagens binarizadas para obter um conjunto de pontos específicos nelas. A quantidade delas é desconhecida, pode variar para mais ou para menos sempre.

double[][] trainArray;
		harris hs = new harris();
		int w = 0, h = 0, j =0;
		int[] orig;
		File diretoryTrain = new File("D:/COISAS/workspace/OCR/Treino/");
		for(File file : diretoryTrain.listFiles()) {
			if(file.isFile()){
				BufferedImage buff = null;
				try {
					 buff = ImageIO.read(file);
					
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				w = buff.getWidth();
				h = buff.getHeight();
				orig = new int[w*h];
				File outputfile = new File("saved.png");
			    try {
					ImageIO.write(buff, "png", outputfile);
				} catch (IOException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				} // Write the Buffered Image into an output file
			    Image im = null;
			    try {
					im  = ImageIO.read(new File("saved.png"));
				} catch (IOException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				} // Opening again as an Image
				
				PixelGrabber grabber = new PixelGrabber(im, 0, 0, w, h, orig, 0, w);
				try {
					grabber.grabPixels();
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				hs.init(orig, w, h, 0.05);
				orig = hs.process();
				for(int i=0; i<orig.length ; i++){
					trainArray[j][i] = orig[i];
					
				}
				System.out.println(j);
				j++;
			}
		}

Mais ou menos assim

A

Você pode usar mapa:

Map&lt;Integer, double[]&gt; trainMap = new HashMap&lt;Integer, double[]&gt;();
...
trainMap.put(i, orig);

No caso da chave coloquei Integer (classe), pois o mapa não aceita tipos primitivos (int, double, etc), no caso do array ele aceita porque em Java, array é um objeto.

E nesse exemplo fica mais fácil pois não preciso percorrer o array e adicionar um por um.

Veja se isso te atende, tanto a interface Map quanto a classe HashMap estão no pacote java.util.

Criado 1 de maio de 2013
Ultima resposta 1 de mai. de 2013
Respostas 3
Participantes 2