Touchscreen Seeed Studio, image .jpeg

reponse a schyzophrene concernant Processing...

Moi je suis curieux de voir le rendu d'une image sur votre écran 2.8", avec carte SD par exemple... et sans carte SD...

Avec un JPEG (ou autre) stocké sur une SD, la qualité sur le 2.8" est comment ? Bonne ?

arduimat:
Moi je suis curieux de voir le rendu d'une image sur votre écran 2.8", avec carte SD par exemple... et sans carte SD...

La qualité est équivalente à un écran de pc si la résolution de l'image est bonne (taille image source == taille écran) vu que c'est souvent des écrans en couleur 24bits, la seule différence entre avec et sans SD c'est la durée pour faire le rendu complet de l'image sur l'écran.

arduimat:
Avec un JPEG (ou autre) stocké sur une SD, la qualité sur le 2.8" est comment ? Bonne ?

Heu .. t'as pas du suive tout le sujet !? C'est pas possible de décompresser un jpg avec une carte arduino, le seul format de fichier utilisable tel quelle c'est les bitmap.

arduimat:
Moi je suis curieux de voir le rendu d'une image sur votre écran 2.8", avec carte SD par exemple... et sans carte SD...

Déjà, on peut se tutoyer :slight_smile:
Ensuite, je n'ai encore affiché aucune image sur mon écran, je n'ai pas trop le temps en ce moment. Mais si j'avais à choisir, je prendrais l'écran avec touchscreen de Sparkfun, qui possède lui un slot SD (tient bizarre, je ne le retrouve pas sur le site...).

arduimat:
Avec un JPEG (ou autre) stocké sur une SD, la qualité sur le 2.8" est comment ? Bonne ?

skywodd t'as répondu :slight_smile:

Bon je galère toujours à convertir une image (.bmp ou autre) en données exploitables. Sur les conseils de zoroastre, j'ai converti une image en .h.
Il me sort une macro que j'ai un peu de mal à savoir utiliser:

/*  Call this macro repeatedly.  After each use, the pixel data can be extracted  */

#define HEADER_PIXEL(data,pixel) 
{
  pixel[0] = (((data[0] - 33) << 2) | ((data[1] - 33) >> 4));
  pixel[1] = ((((data[1] - 33) & 0xF) << 4) | ((data[2] - 33) >> 2));
  pixel[2] = ((((data[2] - 33) & 0x3) << 6) | ((data[3] - 33)));
  data += 4;
}

En faite, je ne vois pas quoi lui passer en argument; sauf pour 'data', j'ai ensuite ce tableau cette variable:

static char *header_data =
	"2&98@J\"@>9V?Z?L>37E45G=>9(Q?;91E6WE.?YR=G;.ZHKO7\\`$V5W!?E9ZFQ=OV"
	":XUZ6'QD4GA877F$2FQ?VNT/O=L\"5'Y35HE-0W-'5XA4?ZIYA+2-@*^&6G]68HI="
	"B*R#B*Y]>*%JF[ETE[R!S>H$C:\"[5'!C>)=[EK.>;Y9I>7Z*SM/W````T.@5H<'="
	"BJRNJL/2P-H-68%VY_PP:)-_:YI<89%E9Y1B>ZAU?K)Z@[**@J=Q@*1PAJQVCK-["
	"I<>OYOHFOMO@T.T#G[NX98=,8H-?@(E[J\\6,P]6^]`0W``\\_]`<V_PPZJL/,@Z&?"
	"H+_HT^D2Z?\\P>*%\\?Z5MG<\"W@*]O@Z^#B;F->JU[_PX`S^D+<IAQAJF#@*&!A*AV"
	"KLK$Y/L7DJ:BAYEQE<)N5E1PI*.OZ?87````````BZ+$7&YV;(^2ZO\\KK\\S8F;JF"
	"X_HE;)U=AK2=O.#!I-&:A[9`>:MS>[!Y`P\\`^PDUF;>ND+\"_H;ZF>J![;I%LRN#]"
	"-3]40T-D8FQJ:6\"$O;CB`````P\\_`P\\_````X?<L````````B*ZO9Y-C:)A9@K&*"
	"W?4.P./0M-NRH<^5E\\6,?J]V````Y?88H+:]HKK(R-[XJLRZA[%_8H!;/T1=1$1@"
	"0D)D=VR4\\/PK``\\``````````P\\_[O`OZ?LG````L='A:)1R;J->F<&P>ZZ&9YM7"
	"D+N!LM>QL-BNE,2)```_`0X`]P@Z[@$Q]`D\\P>'-B*Z\"5%QE.3]=+3A514=IAH2O"
	"`````````````P\\_````BZR`:9!_C*JEC;2K6X=K8)%<<YR4:J)F78Y5=Z1J6WQ="
	"98)QE+:;```````_````````_PX\\KM\"\\5V)U1DAC14AG,#E>/D-K8&&6_PX^````"
	"````\\@,IC;.Q6H)N98YI<IIU6XQJ89-A7XI?2'%=6(M5:I9I6G9;+3A-+CE-;7*!"
	"]`<M````````````````@(^]*#5>(\"I8,3U?-T!H7V.(W.P;````X/04OM_<=*9M"
	"<)YO:9-K:9%O<IAV;IAS9I=D685<3WU=S^L0>:B(,T13,T)>1U)DFJ6[M=6O`@\\`"
	"`````P\\_V^L7(3%@)C9;)3%8+#Q<862%GJ;)LK_D@(^N@J]RD<%W=ZEO=:9M9(QJ"
	"D[6RBK.B>)N!>:)S;9ECEK]ZI\\:W4V9M3V%M@JYXC[.%PMC=[`(F^@HY````````"
	"9W2:0%-K.4]?-DIB.$AH+SYD14EC*3->'RY;9HML@ZUT5FA[<(>+R-X,````````"
	"P-G_D;AR;9]IB:>%E+^!C*Z(A:R'@;9O@;-F=JIA````````P='[:WNA,$!K)CE@"
	"(31:(C1:.TQE24EE)S=;)3-8-D%A.D)C7V-];G&'='J3X_,>````````T>8!G:^?"
	"CY2B?X29BI^,FKY^E;Z0B;5`:Z-:::)2I[C=.T]N.T=H+T%A+3IB*SI?0%-F-4)="
	"6FYP45MP455N65EI*\"]4(BE0,SQ6.D1;/$9A2$MF6%Q[;G.07&&!5%MY:6R!:FY^"
	"8&5V7F5O5FQB77QJ98]F?*%U,T5@0%%GC)&>.$==-DI>0%-C0T]@25QI0E9B775K"
	"/C];+R]4*RQ2+\"Y4.#M4-3E5,SM6+#991TUJ2U!J4EML>I-IA95M3U%H5EIL8VAW"
	"8VAU3%5E5G)P7(=O0$YG7V)P;65[95M_>'I_9'!I4&-P3V)G7&)K46ED&R-1'R)2"
	"*\"M1*2I2+C95/$1=.T5?1$AB24]I-3Q=0E-??JY=@[%:9']A>91TB+)\\>:5V15UA"
	"9X-DDL)X.T9C-T)@(2E3/CY@JK*B9WMRA)J,:WEV/DU8*3=1.D-C-3]=)RU8*\"Y7"
	",SQ7-#M;/D5E)S%<*31;-4%?A*:7<)I`>Z5S;J%<@+!]>:EW=*5N7GMB3EAC9'UG"
	"'RQ5)S17(\"=1,#!3@HR!K:^C='Q]6FM[1&-98WUM-3YA-3MC+S5@.CYH/CYL0D1O"
	"-SMK+C)D+SAG1D=R2$]I>I9S=Z5N<J5K@+\"\"@;\"!;YUG7&MF3&%7151;%B).&\")1"
	"(\"52/CQ2;G=M@XF!+#1BBYB5@6R,IU?!6EE]9%^%;FJ76E:1=WFU?H6[FZ;6G:O7"
	"BYJZC9VTF*G$BJQ]A:E^@ZI\\?JES>:=O;)A@:YAA=*%C<I=K&R-/*BI2<'QFHK=X"
	"8FI_LLI\\IJ>08G.*S63.Q8'>CI.V]P@[`P`````````````````````_`@`_````"
	"````SN7ZG[ZOJ\\G!Z?XEB[.=<9QMC;6@AZN3<IYL8GIM-SI?BYVFG;R0JL\"_LL77"
	"DZ>G]`\\`W67LNX'0HJ/*`````P\\_````````\\O\\J\\_`M_0P[Z_TH`````0X^````"
	"````````J\\O.?Z6!GL*Z````BK&==)QK;:)MC:*4N<O6C+6LD[>8C*V(NMCJL+'="
	"WUSN]/4ORM#\\]0,E````_@TU`P\\__@L[[?HD_@HX_PTZ````````````````Z?PG"
	"T>?``@```````@``AZ>(<9-M;)]^>:A]U=KTUMT$N=7A<).\"F;.@W=P0X5KS`PP`"
	"`````P\\``P``]-HDZJT-^NXO[_`P\\_PJ_@@W`P\\_`P\\_````````\\0,PV.K`H[^X"
	"````````X?06O]GT?*FB?:F&Q]@)W>40L\\;4<Y2!A:>@\\.`IZ67\\PL7D_P\\^\\^XI"
	"X6?UXT7IWK$%KKC-LK\"_V]L#_0<Y_`L[````````````_0P]E;&AL<G.````````"
	"````S^@%?JRICKBI459_Y?4J_@P]JZO#J*RYJ:JW[)\\!Z-3\\UL/LZWW][&'XQL7."
	"I,K0I[_(D)*>R=3=[/_:^@<<````````````_0LZVN`&_@LY`P\\_`P``````Z`$E"
	"?JRJPM_^Q<_Y@'J0DXZAFZ&E=)=^A*6&\\:H%S9W2\\+X(]-,0G9J>CZ^.MKO(K,/0"
	"E*NWNKNLLM*4[@'B`````P\\_`````````````````P\\_````]@@VJL^ND+G$N,[9"
	"?H:<?'R,DIN-C(R9DI^GO[O#[J+ZOJ'*^[\\;H:ZCAK!^<IIZ@:5WN<J[K\\'/R-'\""
	"O=:CQ=_J_@L]````X/(9Z/49`P``[`<.^0HMSN_A^PPJTNW_HL;3B:Z;K,##IZ2R"
	"F)6=JKV'Z/,@````]^PE^?LPY=H3R%S&W5?CVE':NWV]O-3KZ?<GR,KSVN3]VN,)"
	"`@X_````_`X_Q]WV\\@,TRMV`Y/4&X_42[O`AYOLLDKFMD;>RC)N'O<[<J[FOV>S:"
	"I\\NIU.7SY\\8&W7WHW5'FY%CLYUWL[G3YYU#O\\]DF`````````````````````P`_"
	"``\\``P``NM3LO-J_L\\V@_PLT]P@TG+^FJLB#DK6+HJ.RQ]K>D,!_O=W(T^SOE+AZ"
	"HZ6;WK[KQL_/]0$H^/4JV*WWY6#HY$3JZH8&^.@L`````P\\``````P``Y_HE\\@,O"
	"````T^D%G\\\"KLL^RG<.XD:MSD+>@DK>0G;NCR^+=L,VMJ<=EQM&+LZYZ4F1DOM#?"
	"ML.,[@$6EKB@>J\"\"G\\;#\\>@CVG+NT'#;\\=<>````TN<-E*NME;\"GE;&JC[&FN-;A"
	"V/09F[FUH[>AB*Y_IL.`GK2MJ,&XGL&EBZ:'=Z)@I,IHAI=K;7UUL\\BDMM\"RW/

Mais je peux me tromper. Un peu d'aide? :slight_smile:

Deuxième soucis, le tableau la variable ci-dessus comporte des '*/', et l'IDE (0023) me sort à la compile:

java.lang.RuntimeException: Missing the / from the end of a / comment */
at processing.app.Sketch.scrubComments(Sketch.java:1651)
at processing.app.preproc.PdePreprocessor.writePrefix(PdePreprocessor.java:105)
at processing.app.Sketch.preprocess(Sketch.java:1277)
at processing.app.Sketch.preprocess(Sketch.java:1229)
at processing.app.Sketch.build(Sketch.java:1510)
at processing.app.Sketch.build(Sketch.java:1493)
at processing.app.Editor$DefaultRunHandler.run(Editor.java:1833)
at java.lang.Thread.run(Thread.java:619)

Il y a un moyen de contourner cela?"
"V>\&^LXS]G:@\\X.<8H[^V[,EOM#Q@9Z.F[:<G;:DD*F?B:&3E+>-G+>*" "D[&#E[6>C)NJ='Z$:8-B;Y!Q:X%P;(EEA::(=(MZ=8-ZP]VSS.S$_@L_`P\\_`@X^" "YOH5NM/#O=;:`````````P\\_=Y1<Y=[<9UQ=9IRC:>!CI_:85G>(Z$A*=\"
"C:VHC)N2AMQ=)IN>9AU=(]M;H1[=)!^F[>=O].N]@S``````\\`````````]<O"
"O];)`````P\Y_LCA*B$BJE\\K<.\"CK-K<I1I1G1;;H!T5()B3&=-4&!?" ":H5A=)!O;HQR=9UK@J6#<8IZF;FGI:RWR]GYWN<5W^<5N\\/GU-X)WN<8\\/HIYO(9" "Z.`>^0(Q^P8XI+S(AZ>*P-.IK<>:G[B5EZ&8E9R@:7MT76EM2V].1&9+9X9E;XIT" "8H)C>XU\\8G%I>I5^@*F?D;&*^`L[`````````@X^RMGZE*BPZ/DD_PLZ`@\\_[OTM" "EJ.PEZ*JGZFPFZ:LAI61FJV+E+%X@*EQ3X)?:9\"!3WU.3WQ0;)14=:!B:HYDA:YT" ";Y-L@9E^BK.LE;:GQ=WIXO8\"P-G)`P``````[?XDYO@=I;W.A:.6@:6+"
"?::$>*1YEKB-JL>$J<&"
@P^FK^>CZU`4(1568I<V//S=9=LD+:(J\O!;95K=(V("
"B
V-D;>RK,:`H[RLIKZ:X_<4`````````````P_````Y/84GKBRAZN0?JB)?JN)" "H\\.Z^DJ[P(>U_7UPN#Q<9UD5H5>L-BK\@(S;)-LP.62>)]V=!T>I>/D;61@:!"
"I,2UA9J3@I>*X?46````T^`````````````````````````````````````P\\_" "PW_KTMM&^>9]`\\0$7]PD7L<G=^@@NW?G=;9=N>*9[A:^-B;./N=34=Z-^I<.X" "]P0LWO(,^0DYP=GF`````````````````P\\_````]@<Y``````````````\\_````" "P^\"[G,6+_`T]````I\\'8````Q./->)]W?JJ%B+&0RN3Q````Q-GF@*>0GL\"R]@8P" "X/41VNX!````````````````````RN#`G;.W`@\\P\````````\@,RH\.CE+Q^"
"";


Mais je peux me tromper. Un peu d'aide? :)

Deuxième soucis, ~~le tableau~~ la variable ci-dessus comporte des '*/', et l'IDE (0023) me sort à la compile:

> java.lang.RuntimeException: Missing the */ from the end of a /* comment */
> at processing.app.Sketch.scrubComments(Sketch.java:1651)
> at processing.app.preproc.PdePreprocessor.writePrefix(PdePreprocessor.java:105)
> at processing.app.Sketch.preprocess(Sketch.java:1277)
> at processing.app.Sketch.preprocess(Sketch.java:1229)
> at processing.app.Sketch.build(Sketch.java:1510)
> at processing.app.Sketch.build(Sketch.java:1493)
> at processing.app.Editor$DefaultRunHandler.run(Editor.java:1833)
> at java.lang.Thread.run(Thread.java:619)

Il y a un moyen de contourner cela?

skywodd:

arduimat:
Moi je suis curieux de voir le rendu d'une image sur votre écran 2.8", avec carte SD par exemple... et sans carte SD...

La qualité est équivalente à un écran de pc si la résolution de l'image est bonne (taille image source == taille écran) vu que c'est souvent des écrans en couleur 24bits, la seule différence entre avec et sans SD c'est la durée pour faire le rendu complet de l'image sur l'écran.

arduimat:
Avec un JPEG (ou autre) stocké sur une SD, la qualité sur le 2.8" est comment ? Bonne ?

Heu .. t'as pas du suive tout le sujet !? C'est pas possible de décompresser un jpg avec une carte arduino, le seul format de fichier utilisable tel quelle c'est les bitmap.

Oui merci de ta réponse, si j'ai compris que du bigmat (:D), j'entendais par JPEG une photo en fait (convertie en bmp), car tout ce qu'on voit sur internet sur ces écrans ce sont des retouches photoshop et jamais le rendu réél pour ça que je m'interroge sur la qualité de ces petits écrans :slight_smile:

Pour ça que j'aimerai bien voir le rendu en photo d'un membre, voir ce qu'il est rééllement possible de faire avec =)

arduimat:
Oui merci de ta réponse, si j'ai compris que du bigmat (:D), j'entendais par JPEG une photo en fait (convertie en bmp), car tout ce qu'on voit sur internet sur ces écrans ce sont des retouches photoshop et jamais le rendu réél pour ça que je m'interroge sur la qualité de ces petits écrans :slight_smile:

Pour ça que j'aimerai bien voir le rendu en photo d'un membre, voir ce qu'il est rééllement possible de faire avec =)

Ok :slight_smile:
J'ai deux écrans TFT dans mes tiroirs, demain ou ce week end je te fait une photo du rendu :wink:

Voila un premier exemple de rendu avec un fichier bitmap (+ mon script .bmp -> .sk -> carte SD dispo sur mon blog), le rendu complet a pris 8.5 seconde.

Problème, ces petit écrans ont une fréquence de rafraichissement de ~60Hz, donc sur la photo avec mon reflex ça se voit ... mais IRL les couleurs et l'image sont vraiment nikel promis :wink:

http://skyduino.files.wordpress.com/2012/01/test_ecran_1.jpg (Arduino UNO + Shield Lcd TFT de watterott)
http://skyduino.files.wordpress.com/2012/01/test_ecran_2.jpg (Carte LPC1768 ARM + écran TFT 3"2)

J'ai aussi deux vidéo de ~30Mo (20 secondes / HD) l'avantage c'est que le rafraichissement ce vois pas en vidéo et que les couleurs rendent mieux, mais j'ai la flemme d'envoyer 40 secondes de vidéo sur mon youtube ... donc si vous voulez je vous passe un lien dropbox :wink:

On dit toujours qu'un code est impossible jusqu'à ce qu'un Chinois fasse entrer une baleine dans une boite d'allumette.

Je vais donc aller fouiller du côté de l'orient pour trouver un convertisseur jpg -> bmp pour le UNO :wink:

desoler si c'est pas ça que vous chercher , je n'ais pas lu tout le topic , mais pour ce qui est de la conversion dimage de multiple genre en tableau de donné a stocké en flash il y a cela
http://henningkarlsen.com/electronics/t_imageconverter565.php

aprés il sufit d'extraire de la lib utft la metode pour affiché des BMP!

Tout ça est bien jolie, mais j'aurais pus faire passer ça par un code vb de mon crue. Cependant le but inavoué ici, c'est de partir d'une image capturée à partir d'une caméra cmos qui sauves le cliché sur carte SD en format Jpeg et d'ensuite transférer de la carte SD vers un écran lcd type TFT sans passer par un ordi...

Nous sommes tous capable d’analyser une image format Jpeg point par point depuis un ordinateur. C'est l'enfance de l'art. Mais de le faire depuis le Arduino, ça c'est plus ardu. :slight_smile:

Le format JPEG n'est pas du tout adapté au traitement sur des petits processeurs. Il met en oeuvre des tables et du calcul matriciel sur des flottants.
Honnêtement, je ne pense pas qu'avec sa faible quantité de mémoire l'arduino puisse faire de la décompression. Peut être sur une Méga faudrait voir.

Ouin je suis suis également d'accord avec ça. Avec le méga peut-être. Cependant avec le nouveaux Adruino YUN ça sera plus que probable.

En réalité décoder du jpeg avec un microcontrôleur c'est possible.

Cette librairie le fait par exemple, moyennant ~3Ko de RAM :
http://code.google.com/p/picojpeg/

Mais ça reste un traitement très lourd de décoder du jpeg.

Edit: vidéo de démo avec une Mega2560