Boa Tarde!
Pessoal preciso da ajuda de Vocês.
O problema é o seguinte estou capturando imagens de uma câmera , onde meu acesso ao hardware e feito através de uma dll
e uso o JNI para acessa-la até ai sem problemas , porem dentro dessa dll tenho um metodo chamado startExposureAndGetImage()
que está setada a um segundo , porem quando executo o programa a imagem está levando em media entre dois e três segundos para serem
capturadas , eu deveria ter 60 imagens por minuto, porem só estou conseguindo capturar 20 imagens por minuto.
acho que minha solução seria força a saída do metodo , porem se souberem de uma formula melhor por favor me indique
segue o código abaixo
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
// Source File Name: AcquisitionThread.java
import ij.IJ;
import ij.ImagePlus;
import ij.process.ImageProcessor;
import javax.swing.JOptionPane;
/**
*
* @author Javax_Javax
*/
public class AcquisitionThread extends Thread {
public AcquisitionThread() {
}
public void run() {
int Cont = 0;
String Mensagem = "";
ImagePlus img = null;
ImageProcessor ip = null;
imageHasBeenShow = false;
short image[][] = null;
long inicio = System.currentTimeMillis();
while(!stop) {
Cont++;
image = AtikJNI.camera.startExposureAndGetImage();
int width = image.length;
int height = image[0].length;
if(img == null) {
img = IJ.createImage("Teste imagem", "16-bit black", width, height, Cont);
ip = img.getProcessor();
}
int pix[][] = new int[width][height];
for(int y = 0; y < height; y++) {
for(int x = 0; x < width; x++) {
pix[x][y] = image[x][y] + 32768;
}
}
ip.setIntArray(pix);
if(!imageHasBeenShow) {
img.show();
imageHasBeenShow = true;
} else {
img.updateImage();
}
img.updateAndDraw();
Salvar(Cont, img);
}
long tempo = (System.currentTimeMillis()-inicio) / 1000;
if (Cont == 0){
Mensagem = Cont+" Não foi Salva nenhuma Imagen!\n em "+tempo+" segundos";
}else if (Cont == 1) {
Mensagem = Cont+" Imagem Salva Com Sucesso!\n em "+tempo+" segundos";
}else{
Mensagem = Cont+" Imagens Salvas Com Sucesso!\n em "+tempo+" segundos";
}
JOptionPane.showMessageDialog(null, Mensagem, "Confirmação", JOptionPane.INFORMATION_MESSAGE, null);
}
private void Salvar(int Cont, ImagePlus imp) {
String Pasta = "C:\\temp\\";
String Nome = "TesteImagem_";
String Tipo = "fits";
//String Tipo = "TIFF";
//String Tipo = "BMP";
//String Tipo = "JPEG";
//String Tipo = "GIF";
//String Tipo = "PNG";
//ImagePlus imp = IJ.getImage();
IJ.saveAs(imp, Tipo, Pasta+Nome+Cont+"."+Tipo);
}
public boolean imageHasBeenShow;
public boolean stop;
}
Att JavaX_JavaX