begin process at 2012 05 29 12:06:33
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

Multimédia

 > 

Fusonner 2 images avec OpenCV


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Fusonner 2 images avec OpenCV

mardi 26 juin 2007 à 16:42:36 | Fusonner 2 images avec OpenCV

hakimus

Bonjour a tous,

je programme en C et j'utilise la bibliotheque openCV pour bricoler des images.
Mon probleme est simple et precis :  j'ai besoin d'ajouter une petite image ET du texte sur une plus grande image.

L'objectif est de rajouter l'heure et un petit logo sur des images provenant d'une webcam.

C'est pas faute d'avoir cherche, mais impossible de trouver une fonction openCV faisant ca!
Ca m'a pourtant l'air simple et je suis sur qu'on doit pouvoir le faire. Je sais qu'on peut le faire avec la SDL, mais j'aimerais eviter d'avoir a utiliser deux bibliotheques graphiques differentes dans mon programme...

Donc voila, si un pro de l'openCV passe par la et a une idee sur la facon de proceder, je lui serais bien reconnaissant.

Merci d'avance
jeudi 28 juin 2007 à 09:32:40 | Re : Fusonner 2 images avec OpenCV

katsankat

Membre Club
Réponse acceptée !
Salut,

Ce procédé s'appelle texture splatting ou encore blending. J'ai écrit une appli en GTK qui superpose 4 textures avec des masques alpha, c'est ultra rapide comme méthode.

Aujourd'hui j'ai besoin du même programme que toi, pour ajouter un copyright sur des centaines de photos à publier.

Ca me parait assez simple sans opencv. Il suffit de bien connaître les types d'images (bmp, jpg, png ...) pour parcourir les pixels. Mais là ou ça devient intéressant c'est que tu peux parcourir facilement les pixels avec opencv.

Exemple: placer un logo BMP de 64x64 pixels sur une image BMP de 1024x768 pixels, en bas à droite à 10 pixels des bords.

Parcourir les pixels de la grande image. De son header on connait la largeur des lignes, le nombre de lignes et de colonnes.

Le coin supérieur gauche de la petite image sera donc sur la colonne
    1024 - 64 - 10 = 970
et sur la ligne
    768 - 64 - 10  = 694

Si c'est un bmp à 3 channels, on se positionne direct sur l'octet
    970 x 694 x 3 = 2019540

A partir de là, faire une boucle imbriquée pour remplacer les pixels de la grande par le pixel du logo. Il faut boucler sur la largeur et la hauteur de la petite image (ici 64 x 64). Enregistrer le nouveau bmp et c'est dans la boite!

Pour ajouter l' heure, un masque alpha peut être envisageable. Créer une petite image qui contient l'heure en noir sur blanc. Lors de la boucle imbriquée (elle même imbriquée), si le pixel est blanc, ne rien faire. Sinon remplacer le pixel de la grande image par celui de la petite.

Je crois bien que je vais m' y mettre en GTK+ parce qu'il dispose des fonctions qui vont bien pour lire/écrire quantité de formats de fichiers et surtout d'éccéder aux pixels. Le principe est le même pour toi avec opencv!
jeudi 28 juin 2007 à 09:42:24 | Re : Fusonner 2 images avec OpenCV

katsankat

Membre Club
Voilà un code qui est très bon.

I can break the rules too, goodbye.

vendredi 29 juin 2007 à 14:54:02 | Re : Fusonner 2 images avec OpenCV

hakimus

Ma parole mais c'est vrai!

Les fonctions d'openCV sont si pratiques que j'en avais oublie d'essayer de le faire moi meme.

Pixel par pixel ca marche tres bien, et on peut meme ignorer le fond blanc par exemple.
Par contre ce serait complique pour afficher l'heure, mais heureusement j'ai trouve la fonction openCV qui s'en charge :

CvFont font;
cvPutText (myImg,"My text",cvPoint(x,y), &font, cvScalar(b,g,r));

Merci de m'avoir ouvert les yeux en tout cas ^^


Cette discussion est classée dans : images, programme, simple, opencv, fusonner


Répondre à ce message

Sujets en rapport avec ce message

C'Est simple jveux savoir comment donner un icone a mon programme [ par keiser ] Comment je peux faire pour changer l'icone du .exe ... je programmes juste avec borland c++ 5 Merci d'avance mes amis :) keiser ---u-@ une question toute simple.. aidez moi, stp!!! [ par xose ] Je viens d'installer le Borland C++. Une fois que le programme est compilé, la fenetre noire disparait toute suite!! Je n'arrive pas à voir jamais les programme de marquage d'images [ par michaeldalinbis ] bonjour,nous sommes 3 étudiants et faisons des recherches sur la stéganographie.recherchons plus précisément des programmes(le + compréhensible possib pb programme très très simple [ par surfeurnet ] voila il s'agit d'un programme très simple qui ne fait pas d'erreurs à la compilation avec dev-cpp mais qui plante quand je l'exécute :#include char n economiseur d'ecran [ par philippexxx ] philippeje souhaite savoir la difference entre un programme graphique simple en visual c++ et un economiseur d'ecranoucomment transformer un programme notion de champs dans un programme.... [ par cabarrus ] salut j'ai des difficulté à comprendre la notion de champs dans un programme ansi que l'utilité des déclarations de champs...sin on peu me faire un pe Traitement d'images et corrélation [ par perigv ] Bonjour à tous,J'aurais bien besoin d'un coup de main.J'ai commencer à réaliser un petit programme qui me permettra de comparer deux images que je cha Gérer des images en dynamique [ par Forthian ] Alors cette fois j'ai besoin de tout votre bon sens...Mes profs m'ont chier un truc, j'ai rien capté, eux non plus mais jsuis censé le faire quand mê redimensionnement bmp [ par LoloS ] Bonjour,Je crée un programme sous C++Builder qui a besoin de charger des images bmp (noir et blanc). Les images dont je dispose doivent être redimensi Conversion image BMP [ par emrod ] Salut, j'aimerais convertir une image BMP 16 bits en image BMP 24 bits, est-ce qu'il existe une fonction ou un programme pour faire ça ?En fait, j'ai


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,967 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales