PDA

View Full Version : Quale linguaggio imparare per automazione e data processing?


blaine1984
02-05-2008, 11:39
Salute!
Avrei bisogno di un consiglio, ho intenzione di iniziare a studiare un linguaggio di programmazione per alcune applicazioni, tuttavia la mia conoscenza dei linguaggi attualmente presenti sul panorama informatico è pari a zero, quindi chiedo consiglio.

Dovrò sviluppare una applicazione in grado di acquisire dati da una webcam (quindi un flusso abbastanza ampio di dati), elaborarli tramite calcolo matriciale per individuare un pattern (praticamente devo trovare il puntino rosso di un puntatore laser per ora, ma vorrei un linguaggio in grado di permettermi di applicare anche elementi più avanzati fino all'object recognition), ricavare un vettore di distanza dal centro dell'immagine del puntino, ricavare ed inviare dei comandi a dei motori per muovere la webcam fino a che non è centrata sul puntino.
Il tutto possibilmente con una interfaccia di tipo visuale.

Qual'è il linguaggio adatto a me?

variabilepippo
02-05-2008, 11:51
C++ (OpenCV (http://opencvlibrary.sourceforge.net/)), Java/C#, Matlab, ...

Comunque se non hai programmato prima di sviluppare un'applicazione di questo tipo da zero passerà molto tempo. :)

blaine1984
02-05-2008, 11:59
quello non è un problema, è un progetto a lungo termine, proprio per questo non voglio imbarcarmi nello studio di un linguaggio non idoneo ^^

Il linguaggio matlab lo ho iniziato a studiare, e in effetti è perfetto per applicazioni di questo tipo, solo che mi interessava trovarne uno che non fosse vincolato ad una piattaforma così pesante ^^

Antares88
02-05-2008, 12:44
C++ (OpenCV (http://opencvlibrary.sourceforge.net/)), Java/C#, Matlab, ...

Comunque se non hai programmato prima di sviluppare un'applicazione di questo tipo da zero passerà molto tempo. :)

potresti argomentare un pò meglio la tua risposta ?

a quanto ho capito l'amico blaine ha due requisiti:

1) interfacciarsi con le porte esterne del pc per gestire la webcam e i motori
2) avere prestazioni sufficienti per poter gestire una certa mole di dati (che forse sarebbe utile quantificare meglio).

Se il Java può soddisfare questi requisiti, perché complicarsi la vita con un linguaggio di più basso livello come il C++ ?

A proposito delle performance leggevo un'articolo su wikipedia che sembra incoraggiante: http://en.wikipedia.org/wiki/Java_performance

Voi che dite ? tra l'altro il java essendo il linguaggio attualmente più utilizzato è oggetto di grande discussione su internet, e questo permetterebbe al nostro amico di trovare molto facilmente assistenza o informazioni tecniche qualora necessario.

variabilepippo
02-05-2008, 12:54
Se il Java può soddisfare questi requisiti, perché complicarsi la vita con un linguaggio di più basso livello come il C++ ?


Ho suggerito (anche) il C++ perché per tale linguaggio esiste la libreria OpenCV, quasi uno standard de facto per questo genere di applicazioni. Non so se esiste un porting di OpenCV per Java/C#, se non dovesse esistere non è certo una passeggiata di salute reimplementare da zero le funzionalità e gli algoritmi supportati dalla libreria.


Voi che dite ? tra l'altro il java essendo il linguaggio attualmente più utilizzato è oggetto di grande discussione su internet, e questo permetterebbe al nostro amico di trovare molto facilmente assistenza o informazioni tecniche qualora necessario.


Ed eventualmente di reinventare la ruota... :) Qui si parla di un'applicazione per la quale il linguaggio conta poco (C++, Java, C#, Matab, ..., vanno tutti bene in mancanza di requisiti più dettagliati), mi sembra molto più importante cercare una libreria ad alto livello che semplifichi il lavoro. A meno che l'utente non abbia MOOOLTO tempo a disposizione per imparare a programmare (bene) in un dato linguaggio e progettare un suo sistema per il riconoscimento delle immagini.

Antares88
02-05-2008, 21:13
leggendo in giro vedevo che pare sia possibile interfacciarsi a opencv con jni.

e qua e la si trovano dei wrapper come questo: http://www.larmor.com/portal/index.php?option=com_content&task=view&id=27&Itemid=60

magari qualcuno ne sa di più.

potrebbe chiedere su questo forum italiano dedicato proprio a opencv: http://www.bernardotti.it/portal/forumdisplay.php?f=7

71104
02-05-2008, 22:44
anche secondo me la presenza delle OpenCV mette al primo posto C++ per un lavoro del genere. se da un lato è probabilmente il linguaggio di programmazione più complesso che esista, dall'altro però offre numerosi strumenti che semplificano molto la vita e aumentano la produttività avvicinandola a quella che si otterrebbe con una piattaforma managed: puntatori automatici, collection classes, classi per la gestione dinamica delle stringhe... si trova tutto nelle STL (Standard Template Libraries). inoltre faccio presente che passare per JNI richiederebbe un apprendimento, seppur minimale, del C++.

edit - segnalo questo sito, è un ottimo reference di C++ (sia della sintassi che delle STL): www.cplusplus.com