• Benvenuti su RaspberryItaly!
Benvenuto ospite! Login Login con Facebook Registrati Login with Facebook


Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5

[-]
Tags
risolto compilare raspberry per

[RISOLTO] Compilare per Raspberry
#1
Provengo dal mondo Windows e quindi mi trovo a malpartito in certe operazioni. So programmare un po' con python ed anche con la shell (quello che per me corrisponde ad un file *.bat, non so se mi son spiegato bene).
Adesso dovrei suddividere una grande immagine PNG in tante piccole immagini (tile) di 256x256 byte. Lo potrei fare con "convert -crop" che so usare in modo assolutamente basico ma, lo stesso, avrei qualche problema.
Esiste però un programma (BioImageConvertor http://biodev.ece.ucsb.edu/projects/bioi...category/4) che fa questa operazione. Esiste nella versione Windows (che ho usato e produce quanto desiderato) che nella versione Linux. Qui son dolori perchè, a quanto ho capito io, esistono solo i sorgenti di tale programmi. Occorrerebbe quindi compilare questi sorgenti e non lo so assolutamente fare.
Qualcuno può aiutarmi o segnalarmi la presenza di qualcosa che faccia quanto desiderato ?
Ho visto che esiste un build-imgcnv-linux.sh lanciato il quale saltano fuori errori che non so assolutamente gestire.
L'utility in questione nel mondo Windows (imgcnv -i canvas.png -o tile.png -t png -tile 256)
trasforma la grande immagine canvas.png in tante piccole immagini 256x256 pixel aventi per nome
tile_000_001_0002.png, tile_000_002_0002.png, tile_000_002_0004.png, ecc. ecc. Al momento non ho ancora capito la logica con cui seguono i tre numeri dopo "tile" e prima di ".png".
Nel mondo Linux (e Mac) la stessa utility fa la operazione, secondo il suo autore.
Qualcuno può aiutarmi ?
Risposta
#2
I sorgenti Linux o il Build è per CPU ARM? RaspberryPi ha CPU ARM, non x86.
Risposta
#3
Beh, se sono sorgenti sono multipiattaforma per definizione... Bisognerebbe capire ch errori ti da


Inviato dal mio iPhone utilizzando Tapatalk
http://bobvann.noip.me
Hai un Raspberry Pi?
(SI)   complimenti, ottima scelta Wink
(NO) compralo al più presto Wink
Risposta
#4
In effetti nelle sorgenti di imgconv vedo delle cartelle dal nome vc2010x86, vc2008x64, ecc. il che mi fa pensare che si non tratti di codice destinato a processori ARM. Il concetto "multipiattaforma" mi è pressochè sconosciuto per cui non mi accingerei neanche di tentare di compilare queste sorgenti, essendo pressochè certo che incontrerei numerosi insormontabili, per me, blocchi.
Piuttosto sto tentando la via di utilizzare l'utility convert con l'opzione -crop e -resize.
Ho creato un programmino in VB6 che dovrebbe costruire i vari richiami (sono ben 170 nel caso della mia grande immagine campione 3068x1152) di convert. Adesso il passaggio successivo sarebbe quello di tradurre il codice VB6 in script sh.
Ecco il codice VB6, che, pur scritto velocemente, sembra effettivamente elencare le chiamate di convert con gli opportuni parametri.
Sarebbe troppo chiedere a qualcuno di tradurlo in codice shell ?
Grazie di qualunque indicazione in merito vorrete darmi.
Codice:
'  
### CROP IMMAGINE  3072x1152 a partire dal pixel Y 380
   '  /usr/bin/convert /home/Webcam/orig_${DataX}.jpg -crop 3072x1152+0+380  /home/Webcam/larg_${DataX}.jpg
 
 
   ' #### Ridimensiono
   ' /usr/bin/convert /home/Webcam/larg_${DataX}.jpg  -resize 800x400 /home/Webcam/maxi_${DataX}.jpg
   
   '--- dimensioni immagine originale
   Larg = 3068  ' larghezza maxi immagine
   Alt = 1152   ' altezza maxi immagine
   CartellaImmagini = "20151006_1200"      ' "YYYYMMDD_HHMM"
   ConvertCrop = "/usr/bin/convert /home/Webcam/orig_{DataX}.jpg -crop "
   ConvertResize = "/usr/bin/convert /home/Webcam/orig_{DataX}.jpg -resize "
   MaxX = Int(Larg / 2 ^ (8 + Scala))
   MaxY = Int(Alt / 2 ^ (8 + Scala))
   MaxScala = 3
   
   '--- per collaudo -------------------
   Debug.Print
   'MaxX = 2: MaxY = 1: MaxScala = 2
   CartellaImmagini = "1200"
   '-------------------------------------
   '--- creazione cartella
   Cartella = "/home/Webcam/" & CartellaImmagini
   ' MKDIR Cartella
   
   
   For Scala = 0 To MaxScala
     Debug.Print "Scala 1:" + CStr(Scala + 1)
     Dimensione = 2 ^ (8 + Scala)
     MaxX = Int(Larg / 2 ^ (8 + Scala))
     For X = 0 To MaxX
        For Y = 0 To MaxY
           p2 = CStr(Dimensione) & "x" & CStr(Dimensione)         ' dimensione (quadrato)
           P3 = "+" + CStr(X * Dimensione) & "+" & CStr(((Y) * Dimensione))    ' coordinata X e Y
           p4 = Format$(Scala, "000") & "_" & Format$(X, "000") & "_" & Format$(Y, "000") + ".png"
           Debug.Print ConvertCrop & p2 & P3 & " " & Cartella & "/tile_" & p4
           NumConvert = NumConvert + 1
           '--- ridimensiono
           If Scala > 0 Then
              p2 = "  /usr/bin/convert " & Cartella & "/tile_" & p4 & " -resize 256x256 "
              Debug.Print p2 & Cartella & "/tile_" & p4
              NumConvert = NumConvert + 1
           End If
        Next Y
        Debug.Print
     Next X
   Next Scala
   
   Debug.Print
   Debug.Print "Convert è stato avviato " & CStr(NumConvert) & " volte"
Risposta
#5
Forse non sarebbe troppo, ma se caricassi il codice su qualcosa tipo arin.ga


Inviato dal mio iPhone utilizzando Tapatalk
http://bobvann.noip.me
Hai un Raspberry Pi?
(SI)   complimenti, ottima scelta Wink
(NO) compralo al più presto Wink
Risposta
#6
(07/10/2015, 17:08)bobvann Ha scritto: Forse non sarebbe troppo, ma se caricassi il codice su qualcosa tipo arin.ga
Sinceramente non so cosa serva arin.ga.
Sono nuovo del mondo di Linux (e di Raspberry) per cui trovo difficoltà nel muoverci dentro.

Sono disponibili i sorgenti di imgcnv (https://bitbucket.org/dimin/bioimageconvert/downloads) ma non sono per ARM, come mi ha confermato l'autore di PanoJS3. Bisognerebbe compilarli (e probabilmente modificarli minimamente) ma è sicuramente qualcosa che va al di là delle mie possibilità.
Ci proverò comunque. Peccato perchè sono ad un passo dal concludere il mio progetto e senza di questo passaggio tutto o quasi è vanificato.

Anche la soluzione, da me stesso prospettata, di utilizzare l'utility convert (con l'opzione -crop) non si è rilevata praticabile in quanto in almeno un caso (del centinaio di volte in cui dovrebbe essere richiamata) l'utility stessa non è in grado di produrre il risultato desiderato (vedi immagine allegata).


Allegati Anteprime
   
Risposta
#7
Ma se ci spieghi bene cosa vuoi ottenere, magari c'è un altra via, che non passa dalla compilazione di qualche programma..
Risposta
#8
(08/10/2015, 09:58)Zzed Ha scritto: Ma se ci spieghi bene cosa vuoi ottenere,  magari c'è un altra via,  che non passa dalla compilazione di qualche programma..

Spiego tutto.
Ho un sito web con una pagina in cui visualizzo l'immagine di una webcam che si aggiorna ogni ora per tutte e 24 le ore. In realtà non è una webcam ma una macchina fotografica (Canon S70) che sono in grado di comandare tramite Raspberry.
Ogni ora il Raspberry scatta una foto che successivamente viene rielaborata, riducendola di dimensioni ed anche creando una sua miniatura, utile per essere visualizzata nella pagina web. In un'altra pagina vorrei presentare la foto nelle sue dimensioni originali (attualmente 3074x1152, ma ho intenzione di aumentare questa dimensione; ma questo è un altro discorso) con possibilità di pan (è un panorama) e di zoom.
Ho visto che c'è del codice Javascript che fa questo lavoro (PanoJS3 - http://www.dimin.net/software/panojs/) ma necessita che l'immagine sia spezzettata in porzioni di 256x256 pixel, a varie scale (100%, 50%, 25%, 12.5%, ecc.. Quindi la mia grande immagine 3074x1152 "produce" ben 87 immagini 256x256, gestite in maniera del tutto trasparente dal codice Javascript di PanoJS3. I nomi delle immaginine sono "tile-SSS-XXX-YYY.jpg" dove SSS è la scala (da 0 a  N; N vale nel mio caso 4 ma per immagini più grandi vale un numero ben maggiore), XXX è il numero dell'immagine sull'asse X e YYY è il numero dell'immagine sull'asse Y. E' questo il concetto di immagini "piramidali", presente anche in altri formati (l'ECW ad esempio).
L'utility tilemaker.py (gira sul Raspberry) produce immagini scoordinate e malamente ridotte, oltrettutto in numero ben maggiore del necessario. Oltretutto crea immagini con nomi nel formato "tile_S_X_Y.jpg", ma questo è un incoveniente sormontabile cambiando un po' di codice Javascript.
L'utility imgconv.exe viceversa fa il suo lavoro egregiamente. Solo che gira sotto Windows. Al link https://bitbucket.org/dimin/bioimageconvert/downloads c'è sia la versione di questa utility sia per Windows che per Linux, ma non per ARM; ci sono anche tutti i sorgenti (è un progetto educativo).
Intravedo queste soluzioni, ciascuna delle quali presenta difficoltà per me, al momento, insormontabili (altrimenti non avrei chiesto il vostro aiuto)i:
1) compilare i sorgenti per ARM
2) buttare via PanoJS3 e sostituirlo con altro simile;
3) modificare tilemaker.py (scritto in pyton, linguaggio a me prossochè sconosciuto)
4) trovare un altro software "tessellatore" che giri nel Raspberry
Spero di essere stato chiaro e "circonciso".
Risposta
#9
Si, infatti, volevo farti arrivare a essere consapevole che ci possono essere anche le soluzioni 2), 3) e 4).
Io percorrere la strada di Python (volendo ci si può appoggiare a qualche servizio online per la conversione) ma non sono così padrone del linguaggio.
Risposta
#10
Soluzioni ?
1) compilare i sorgenti per ARM
Ho provato seguendo le istruzioni abbastanza chiare trovate qui (http://askubuntu.com/questions/124078/ho...ile-imgcnv) ma sono per ubuntu ed in ogni caso alla fine mi ha dato un errore (o forse 4, non so bene)
2) buttare via PanoJS3 e sostituirlo con altro simile;
Quale ?
3) modificare tilemaker.py (scritto in pyton, linguaggio a me prossochè sconosciuto)
Sarà l'ultima risorsa. Sono poco più di 200 linee di codice astrusissimo.
4) trovare un altro software "tessellatore" che giri nel Raspberry
Ne esisterà un altro adatto ? In genere sono dedicati a Google Maps o Open Street Map.
Risposta
  


Vai al forum:


Navigazione: 1 Ospite(i)
Forum con nuovi Post
Forum senza nuovi post
Forum bloccato
Forum Redirect