NSImage et camera

orfaitorfait Membre
10:33 modifié dans API AppKit #1
Bonjour,


Je ne trouve pas beaucoup d'informations sur le moyen de récupérer facilement une image provenant d'une source vidéo telle que Isight ou autre caméra (USB ou FireWire), pour ensuite la mettre dans un NSImageView.
A chaque fois que je trouve des informations, il faut passer par QTKit qui me semble surtout orienté vidéo ou alors utiliser Quartz Composer.

Donc si vous avez une suggestion à  me faire, n'hésitez pas !

Réponses

  • orfaitorfait Membre
    10:33 modifié #3
    Justement, c'était dans mes pistes mais je ne trouve pas le moyen de faire un "snapshot" comme ils prétendent que c'est possible.
  • Philippe49Philippe49 Membre
    10:33 modifié #4
    En tout cas l'application PictureTaker dont il fournisse un pas-à -pas marche bien, hormis une faute de frappe
    [picker beginPictureTakerSheetForWindow:[mImageView window] withDelegate:self didEndSelector:@selector(pictureTakerDidEnd:code:contextInfo:) contextInfo:nil];

    au lieu de
    [picker beginPictureTakerSheetForWindow:[mImageView window] withDelegate:self didEndSelector:@selector(pictureTakerValidate:code:contextInfo:) contextInfo:nil];

  • BruBru Membre
    10:33 modifié #5
    dans 1194782610:

    Je ne trouve pas beaucoup d'informations sur le moyen de récupérer facilement une image provenant d'une source vidéo telle que Isight ou autre caméra (USB ou FireWire), pour ensuite la mettre dans un NSImageView.
    A chaque fois que je trouve des informations, il faut passer par QTKit qui me semble surtout orienté vidéo ou alors utiliser Quartz Composer.
    Donc si vous avez une suggestion à  me faire, n'hésitez pas !


    Quoique tu veuilles, tu devras passer par le QTKit !
    En effet, c'est ce dernier qui gère les caméras (webcam, isight ou caméra dv).

    Ce que tu veux faire est faisable mais complexe (du moins pour 10.4 et antérieur, car depuis 10.5, il y a un nouveau API que je n'ai pas encore étudié).
    Donc, un petit sur la doc de ce API (mais aussi dans le guide associé) pour avoir quelques pistes...

    .
  • orfaitorfait Membre
    10:33 modifié #6
    Je travaille sur 10.5
    Quelle est l'API en question ?
  • BruBru Membre
    10:33 modifié #7
    dans 1194871083:

    Je travaille sur 10.5
    Quelle est l'API en question ?


    Je pense au nouveau framework QTCapture (voir ici), introduit sous Leopard.

    .
  • 10:33 modifié #8
    Sous 10.5, le plus simple est ceci.
  • orfaitorfait Membre
    10:33 modifié #9
    dans 1194872301:

    Je pense au nouveau framework QTCapture (voir ici), introduit sous Leopard.

    J'avais aussi regardé cette page. Mais sans vraiment voir comment mettre en flux continu les données d'une camera dans un NSImageView.

    dans 1194873863:

    Sous 10.5, le plus simple est ceci.

    Pour 1 photo oui, mais pour un flux de photos, non.

    Je comprends maintenant que j'ai oublié une précision...
    Je travaille sur du traitement d'image sur DSP et je veux en réalité faire une prévisualisation des algos que je code en C pour le DSP. Donc j'ai fait une fonction qui me met une NSImage convertie en N&B (suivant diverses formules) dans un tableau (unsigned char image[w][h] par exemple) et une autre qui remet un tableau résultat dans un NSImage. Entre les deux, je code mon algo en C.
    Donc en gros, je cherche à  traiter une image par clic sur un bouton et un flux d'image par clic sur un autre bouton.
    J'espère que c'est assez clair...
  • BruBru Membre
    10:33 modifié #10
    dans 1194880931:

    Donc en gros, je cherche à  traiter une image par clic sur un bouton et un flux d'image par clic sur un autre bouton.
    J'espère que c'est assez clair...


    Depuis 2 jours, j'essaie de retrouver le projet que j'avais fait pour tester ma webcam...
    ça tournait sous 10.3 (donc logiquement aussi sous 10.4 voire 10.5 moyennant quelques deprecated).
    La prise de la "photo" se faisait par clic sur un bouton pour afficher un NSImageView contenant la photo (mais en fait, en place de ce bouton, ça pourrait être un NSTimer qui à  intervalle régulier créé un nouveau NSImage)...

    Est-ce plutôt cette piste que tu veux exploiter ?

    .
  • orfaitorfait Membre
    10:33 modifié #11
    Actuellement, j'utilise un fichier quartz composer avec un published output. J'ai un thread de traitement pour le flux "continu" (moyennant un usleep(xx) ).

    Si tu le trouves, je suis preneur mais ne te casse pas la tête si tu ne trouves pas.
  • orfaitorfait Membre
    10:33 modifié #12
    Hoplà , pas la peine de chercher plus loin et je dis ça surtout pour Bru. Mon projet sur DSP n'a pas ce qu'il faut sur le plan matériel donc je lâche l'affaire au moins pour un temps.

    Merci quand même pour vos propositions et aides, et désolé pour le dérangement qui aura été peut être inutile au final (sauf pour ma culture mais bon...)
  • orfaitorfait Membre
    10:33 modifié #13
    Réouverture du sujet...

    J'ai de nouveau besoin de ce genre de système mais qui puisse se rapprocher de la vidéo (traiter 25-30 images/s).
    Si quelqu'un peut m'aider...
  • CeetixCeetix Membre
    10:33 modifié #14
    Je me permet de upper ce post car j'ai un soucis sous IB3 . J'essai en effet de realiser un tuto apple. Je fais à  la lettre ce que l'auteur écrit mais quand je passe sous IB3 pour mettre les vues webcam eh bien ma library n'affiche aucun élément de du framework QTKit ... Je ne comprends pas pourquoi...
  • AliGatorAliGator Membre, Modérateur
    10:33 modifié #15
    Essaye de faire glisser une NSView classique (Custom View) puis de changer ensuite dans un second temps sa classe (dans l'inspecteur dans IB3) de NSView à  WebCamView (ou je ne sais pas comment ta classe s'appelle, je te laisse adapter).

    Si la classe n'est pas proposée dans le menu déroulant pour changer la classe de ta NSView, tu peux faire glisser le framework QTKit (ou peut-être que tu es obligé de faire glisser les .h de ce framework, que tu vois quand tu déploies "QTKit.framework" dans le groupe "frameworks" dans ton projet Xcode, y'a un sous-dossier "Headers" qui apparait alors contenant les .h) sur ta fenêtre dans IB3 pour que ce dernier "en prenne connaissance" et les reconnaisse.

    Par contre pour avoir ta classe WebCamView (ou peu importe son nom) dans la librairie c'est une autre affaire, il faudrait faire une IBpalette personnalisée contenant ces objets pour qu'ils soient proposés (à  moins que qqun sur le net ait déjà  réalisé cette palette pour placer des éléments de QTKit facilement dans IB en un mouvement dans ce cas il suffit de rajouter cette IBPalette à  ton IB3)... mais bon sans cette palette tu peux toujours mettre ta CustomView et changer sa classe puis la paramétrer dans IB.
  • CeetixCeetix Membre
    10:33 modifié #16
    Le truc c'est que la palette existe ...
    ib_lib_qtcap.jpg
  • Philippe49Philippe49 Membre
    10:33 modifié #17
    Un bon tuto dans .. la doc Apple

    ADC Home > Reference Library > Guides > QuickTime > Cocoa > QTKit Capture Programming Guide >
  • CeetixCeetix Membre
    10:33 modifié #18
    Oui c'est ce lien que je donne dans mon post en page 1 et justement je l'ai suivi et je n'arrive pas à  avoir la palette que le formateur affiche dans mon post avant...
  • Philippe49Philippe49 Membre
    10:33 modifié #19
    Il se trouve dans QuickTimeKit
    Tu dois sans doute aussi importer le framework adapté
  • CeetixCeetix Membre
    10:33 modifié #20
    Je l'ai importé dans Xcode en clique droit sur dossier Framework et en le choisissant  (QTKit.framework)... Et rien dans IB ...
  • CeetixCeetix Membre
    10:33 modifié #21
    Bon j'ai plusieurs framework QTKit donc j'en ai impoter d'autres et ca marche .... C'est chi***
    Merci ! ;)
Connectez-vous ou Inscrivez-vous pour répondre.