2010-01-08 22 views
0

J'écris un programme, qui fera quelques transformations avec l'image d'une webcam en temps réel. Comme presque toutes les autres webcams, mon noname donne des données au format YUY2 (comme écrit dans bmiHeader.biCompression). J'ai essayé la conversion droite sur le côté CPU selon http://www.fourcc.org/yuv.php#YUY2, mais c'est TRÈS lent et faux :).Conversion rapide de YUY2 à RGB24

Lorsque je connecte la broche de sortie de la source au moteur de rendu, l'image et le framerate se portent bien. Donc je cherche un filtre DirectShow, ou, peut-être, un codec, qui fera une conversion rapide de YUY2 en RGB24 sur la carte vidéo et me donnera le résultat sans le rendre à l'écran.

J'utilise:

  • 32 bits de Windows XP SP3.
  • VC++ 2005
  • Windows SDK récemment téléchargé.
  • DirectX août'09.

Répondre

2

Je n'ai pas le code disponible pour le moment. mais jetez un oeil à l'aide du GDI pour faire la conversion très rapidement.

Fondamentalement capturer le cadre source, créer un dib de la mémoire dans le format correct (rgb24) et blit au bitmap. la conversion se produit pendant le blitting et dans mon expérience est très rapide.

Je l'utilise pour saisir des images à partir d'une webcam et puis je peux déposer les images sur le disque dur à la fréquence d'images requise en tant que jpegs ou bitmaps.

DC

+0

Je marqué réponse acceptée non pas parce qu'elle m'a aidé. Mais j'ai trouvé la solution. Je viens de définir AM_MEDIA_TYPE pour mon ISampleGrabber à rgb24, comme écrit dans MSDN. – peterdemin