AsciiLife - Réalité diminuée - Regardez le monde en Ascii!

APAP Membre
18:32 modifié dans Vos applications #1
Bonjour,

Ma première appli a été validée.
C'est une application qui va à  l'encontre de la réalité augmentée car à  la place je ne propose qu'une version dégradée  ;)
Le but de l'appli est d'utiliser la camera de l'iPhone pour représenter ce qu'elle voit en ascii Art:
Elle est dispo ici http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=363452628&mt=8
Une petite capture pour voir ce que ca donne:
IMG_0057.jpg

Les clichés ainsi pris peuvent être partagés automatiquement sur Facebook ou Twitter.

Si vous avez des idées d'amélioration, je suis preneur :)

Réponses

  • 18:32 modifié #2
    Dis donc, t'as pris la pilule bleue ou la rouge?  :P
  • APAP Membre
    18:32 modifié #3
    La verte  ;)
  • GreensourceGreensource Membre
    18:32 modifié #4
    Sympa le principe! J'ai une question du coup pour toi, tu utilises des API privée pour récupérer le flux video de la camera?
    Si oui tu utilises la méthode UIGetScreenImage() ou bien la méthode de norio nomura ou dérivée?

    Merci,
    Pierre
  • DrakenDraken Membre
    18:32 modifié #5
    L'idée est amusante !
  • APAP Membre
    18:32 modifié #6
    dans 1269851750:

    Sympa le principe! J'ai une question du coup pour toi, tu utilises des API privée pour récupérer le flux video de la camera?
    Si oui tu utilises la méthode UIGetScreenImage() ou bien la méthode de norio nomura ou dérivée?

    Merci,
    Pierre


    Hello,

    J'utilise UIGetScreenImage(). Ca nécessite un peu de manipulation, ce n'est pas des plus rapide mais ca fonctionne et c'est accepté par Apple :)
  • AliGatorAliGator Membre, Modérateur
    18:32 modifié #7
    Ca m'intéresse ça...  En effet malgré que ce soit une API privée, est prévu pour être passé en public prochainement d'après les forums Apple.
    Mais si tu utilise ça, tu as une capture de ce que tu as à  l'écran, pas de ce que tu as à  la sortie du capteur de la caméra.
    Du coup si tu places en overlayView le résultat de ton traitement d'image (donc ton image transformée en ASCII-Art), la prochaine fois que tu fais un UIGetScreenImage(), tu auras en résultat une CGImageRef qui aura capturé ce que tu as à  l'écran... donc ton image en ASCII-Art !

    A moins bien sûr que tu ne re-supprimes ton overlayView, attende une boucle de rendu pour qu'elle se masque effectivement de l'écran, et seulement là  commence à  faire un UIGetScreenImage... mais :
    • Si tu fais ça en continu (si tu fais vraiment du temps réel comme le dis la description de ton appli), ça risque pas de "clignoter" à  l'écran si tu n'arrêtes pas de masquer ton ASCII-Art, pour faire le UIGetScreenImage(), puis calculer le nouvel ASCI-Art, l'afficher, puis le remasquer et recommencer, ... ?
    • Ou alors tu fais peut-être du one-shot, c'est à  dire que tu laisses l'utilisateur "filmer" son environnement (enfin bouger son iPhone avec l'image de la caméra affichée à  l'écran pendant ce temps, et quand il le décide, il tape sur un bouton ou je ne sais où, ça prend la photo et fait la transformation en ASCII-Art. Mais dans ce cas ce n'est plus du temps réel (et même utiliser UIGetScreenImage() au lieu d'un -takePicture de UIImagePickerController n'a pas spécialement d'intérêt, si ?)

    Du coup je suis preneur d'une explication, je suis plutôt intéressé pour savoir comment tu as fait et pensé le tout si tu as vraiment fait du temps réel ?

    Merci de ces retours ;)
  • APAP Membre
    18:32 modifié #8
    dans 1269888529:

    Ca m'intéresse ça...  En effet malgré que ce soit une API privée, est prévu pour être passé en public prochainement d'après les forums Apple.
    Mais si tu utilise ça, tu as une capture de ce que tu as à  l'écran, pas de ce que tu as à  la sortie du capteur de la caméra.
    Du coup si tu places en overlayView le résultat de ton traitement d'image (donc ton image transformée en ASCII-Art), la prochaine fois que tu fais un UIGetScreenImage(), tu auras en résultat une CGImageRef qui aura capturé ce que tu as à  l'écran... donc ton image en ASCII-Art !

    A moins bien sûr que tu ne re-supprimes ton overlayView, attende une boucle de rendu pour qu'elle se masque effectivement de l'écran, et seulement là  commence à  faire un UIGetScreenImage... mais :
    • Si tu fais ça en continu (si tu fais vraiment du temps réel comme le dis la description de ton appli), ça risque pas de "clignoter" à  l'écran si tu n'arrêtes pas de masquer ton ASCII-Art, pour faire le UIGetScreenImage(), puis calculer le nouvel ASCI-Art, l'afficher, puis le remasquer et recommencer, ... ?
    • Ou alors tu fais peut-être du one-shot, c'est à  dire que tu laisses l'utilisateur "filmer" son environnement (enfin bouger son iPhone avec l'image de la caméra affichée à  l'écran pendant ce temps, et quand il le décide, il tape sur un bouton ou je ne sais où, ça prend la photo et fait la transformation en ASCII-Art. Mais dans ce cas ce n'est plus du temps réel (et même utiliser UIGetScreenImage() au lieu d'un -takePicture de UIImagePickerController n'a pas spécialement d'intérêt, si ?)

    Du coup je suis preneur d'une explication, je suis plutôt intéressé pour savoir comment tu as fait et pensé le tout si tu as vraiment fait du temps réel ?

    Merci de ces retours ;)

    Ah ca me fait plaisir que pour une fois ce soit mois qui apprenne qqlch à  Aligator (Jusqu'à  maintenant c'était l'inverse)
    En fait l'astuce est simple (même si je n'ose pas dire le temps qu'il m'a fallu pour la mettre au point...), il suffit de regarder dans le coin inférieur gauche...
  • AliGatorAliGator Membre, Modérateur
    18:32 modifié #9
    J'avoue que j'y ai pensé (j'imagine que ce que l'image que tu as en haut à  gauche justement, c'est la cameraView de ton UIImagePickerController à  laquelle tu as appliqué une CGAffineTransform pour la placer là , histoire d'avoir ce que capte la camera à  cet endroit ?), mais comme UIGetScreenImage() te retourne la capture de l'écran en temps réel, et donc à  la taille de l'écran... du coup " même si tu extraits de cette CGImageRef retournée par la capture juste ce coin supérieur gauche " la zone que tu analyses, et qui correspond à  ce que filme la camera, est plutôt petite, non ? (de l'ordre de 30x40 au feeling).. ça suffit à  libcaca pour te sortir une image en ASCIIArt qui soit suffisamment réaliste ?
  • APAP Membre
    18:32 modifié #10
    En fait vu la petite taille de l'image disponible je n'utilises pas libcaca mais une implémentation perso (ce n'est pas si compliqué que cela).
    J'ai des projets similaires nécessitant une plus grande taille de source video et là  je coince un peu.
  • GreensourceGreensource Membre
    18:32 modifié #11
    Tu n'as pas eu de souci avec UIGetScreen()? Parce que moi je lance un Timer qui va régulièrement faire appel à  une méthode qui fait UIGetScreen();
    Et lorsque j'y fait appel trop souvent (un Interval de moins d'une seconde) et bien mon appli reçoit deux memory warning puis quitte l'application.

    Pourtant j'ai vérifié avec Instruments (Object Allocation) et je ne dépasse jamais les 1Mo de mémoire.

    Tu as rencontré ce problème?
  • APAP Membre
    18:32 modifié #12
    Pas eu de problème de ce type. Poste-nous ton code que l'on regarde.
  • GreensourceGreensource Membre
    avril 2010 modifié #13
    [edit] Bon autant (où au temps  :P) pour moi, erreur de débutant, un release n'était pas fait donc forcément...

    Désoler d'avoir un peu pollué ton post.
  • LastikoLastiko Membre
    18:32 modifié #14
    j'adore l'idée  o:)
Connectez-vous ou Inscrivez-vous pour répondre.