Jump to content
Sign in to follow this  
rbn24

Nyartoolkit em imagem

Recommended Posts

rbn24

Boas Pessoal tou a tentar fazer um programa em java usando a biblioteca de Nyartoolkit para realidade aumentada mas não quero utilizar a web cam mas sim o que o programa reconheça a marca numa imagem jpeg. Por favor preciso de ajuda urgentemente, desde já um muito obrigado...

Share this post


Link to post
Share on other sites
M6

rbn24, se queres ajuda tens de explicar de forma clara qual é o teu problema.

Dizeres que tens um trabalho para fazer e que estás enrascado não vai fazer com que alguém adivinhe quais as tuas dificuldades...


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites
rbn24

uhm ok, lol tou ta tentar fazer um programa que receba uma imagem jpeg e com o uso da biblioteca Nyartoolkit reconheça a marca de realidade aumentada nessa imagem e carrega um modelo em 3D nessa imagem em cima da marca na imagem, espero que consegui explicar o meu problema :(

Share this post


Link to post
Share on other sites
M6

Descreveste o que necessitas, mas não descreveste nenhum problema...

Tens um bug no programa?

Não consegues compilar?

Não sabes o que fazer?

Desconheces o algoritmo?

Não consegues importar a biblioteca?

... ?

Tens de ser concreto nos teus pedidos de ajuda...


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites
rbn24

Tenho o seguinte codigo em java para a biblioteca Nyartoolkit para a receber a imagem da webcam e introduzir um modelo em 3D em cima da marca, mas não quero utilizar a webcam mas sim um ficheiro jpeg e não tou a ver como alterar a parte do reconhecimento atraves da webcam para o reconhecimento atraves de um ficheiro jpeg

public class JavaSimpleLite implements GLEventListener, JmfCaptureListener
{
private final static int SCREEN_X = 640;

private final static int SCREEN_Y = 480;

private Animator _animator;

private JmfNyARRaster_RGB _cap_image;

private JmfCaptureDevice _capture;

private GL _gl;


private NyARSingleDetectMarker _nya;

private NyARParam _ar_param;

private Object _sync_object=new Object();
private double[] _camera_projection = new double[16];

public JavaSimpleLite(NyARParam i_param, NyARCode i_ar_code) throws NyARException
{
	this._ar_param = i_param;

	Frame frame = new Frame("NyARToolkit["+this.getClass().getName()+"]");



	JmfCaptureDeviceList devlist = new JmfCaptureDeviceList();
	this._capture = devlist.getDevice(0);
	if (!this._capture.setCaptureFormat(SCREEN_X, SCREEN_Y, 30.0f)) {
		throw new NyARException();
	}
	this._capture.setOnCapture(this);

	this._cap_image = new JmfNyARRaster_RGB(this._capture.getCaptureFormat());

	this._nya = new NyARSingleDetectMarker(this._ar_param, i_ar_code, 80.0,this._cap_image.getBufferType());
	this._nya.setContinueMode(true);


	GLCanvas canvas = new GLCanvas();
	frame.add(canvas);
	canvas.addGLEventListener(this);
	frame.addWindowListener(new WindowAdapter() {
		public void windowClosing(WindowEvent e)
		{
			System.exit(0);
		}
	});

	frame.setVisible(true);
	Insets ins = frame.getInsets();
	frame.setSize(SCREEN_X + ins.left + ins.right, SCREEN_Y + ins.top + ins.bottom);
	canvas.setBounds(ins.left, ins.top, SCREEN_X, SCREEN_Y);
}

public void init(GLAutoDrawable drawable)
{
	this._gl = drawable.getGL();
	this._gl.glEnable(GL.GL_DEPTH_TEST);
	this._gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);

	try {

		_capture.start();
	} catch (Exception e) {
		e.printStackTrace();
	}

	NyARGLUtil.toCameraFrustumRH(this._ar_param,1,10,10000,this._camera_projection);
	this._animator = new Animator(drawable);
	this._animator.start();
	return;
}

public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height)
{
	_gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
	_gl.glViewport(0, 0, width, height);


	_gl.glMatrixMode(GL.GL_PROJECTION);
	_gl.glLoadIdentity();

	_gl.glMatrixMode(GL.GL_MODELVIEW);
	_gl.glLoadIdentity();
}

private boolean _is_marker_exist=false;
private NyARTransMatResult __display_transmat_result = new NyARTransMatResult();

private double[] __display_wk = new double[16];

public void display(GLAutoDrawable drawable)
{
	NyARTransMatResult transmat_result = __display_transmat_result;
	if (!_cap_image.hasBuffer()) {
		return;
	}

	this._gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); // Clear the buffers for new frame.
	try{
		synchronized(this._sync_object){
			NyARGLDrawUtil.drawBackGround(this._gl,this._cap_image, 1.0);			
			if (this._is_marker_exist){

				this._gl.glMatrixMode(GL.GL_PROJECTION);
				this._gl.glLoadMatrixd(_camera_projection, 0);
				this._gl.glMatrixMode(GL.GL_MODELVIEW);

				this._gl.glLoadIdentity();

				this._nya.getTransmationMatrix(transmat_result);

				NyARGLUtil.toCameraViewRH(transmat_result,1, this.__display_wk);
				this._gl.glLoadMatrixd(this.__display_wk, 0);		

				this._gl.glPushMatrix(); // Save world coordinate system.
				this._gl.glTranslatef(0.0f, 0.1f,20); // Place base of cube on marker surface.
				this._gl.glDisable(GL.GL_LIGHTING); // Just use colours.
				NyARGLDrawUtil.drawColorCube(this._gl,40);
				this._gl.glPopMatrix(); // Restore world coordinate system.
			}
		}
		Thread.sleep(1);
	}catch(Exception e){
		e.printStackTrace();
	}

}

public void onUpdateBuffer(Buffer i_buffer)
{
	try {
		synchronized (this._sync_object) {
			this._cap_image.setBuffer(i_buffer);
			this._is_marker_exist =this._nya.detectMarkerLite(this._cap_image, 110);
		}
	} catch (Exception e) {
		e.printStackTrace();
	}
}

public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged)
{
}

private final static String CARCODE_FILE = "../../Data/patt.hiro";

private final static String PARAM_FILE = "../../Data/camera_para.dat";

public static void main(String[] args)
{
	try {
		NyARParam param = new NyARParam();
		param.loadARParamFromFile(PARAM_FILE);
		param.changeScreenSize(SCREEN_X, SCREEN_Y);

		NyARCode code = new NyARCode(16, 16);
		code.loadARPattFromFile(CARCODE_FILE);

		new JavaSimpleLite(param, code);
	} catch (Exception e) {
		e.printStackTrace();
	}
	return;
}
}

Share this post


Link to post
Share on other sites
M6

Verifica se a API pode receber uma imagem estática.

Caso contrário podes tentar enviar/simular tu o streaming da imagem a partir da imagem estática.

Não conheço a biblioteca, mas isso não deve ser muito diferente de enviar um array de bytes ou algo assim...


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites
M6

Verifica como a documentação e verifica se a API pode receber uma imagem estática ou se podes injectar um stream de bytes no local onde a câmara e ligaria...


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites
Leandro Trindade

Bom dia, a todos.

Estou fazendo um trabalho de conclusão de curso, conhecido aqui no Brasil como TCC, em que utilizo o Nyartookit para projetar animações na imagem real.

O problema é que preciso projetar sem o marcador na imagem real. A posição da projeção será lida de uma base de dados, por exemplo o centro da imagem real. Não estou conseguindo projetar a animação 3D sem o marcador, tentei passar os parametros no código como se o marcador tivesse cido encontrado, mas não obtive sucesso.

Quem sabe alguem já fez isso e possa me ajudar.

Um abraço e muito obrigado,

Leandro Trindade

São Paulo, Brasil.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.