cs_elo29
Messages postés70Date d'inscriptionmardi 7 février 2006StatutMembreDernière intervention26 avril 2006
-
24 avril 2006 à 09:21
cs_elo29
Messages postés70Date d'inscriptionmardi 7 février 2006StatutMembreDernière intervention26 avril 2006
-
26 avril 2006 à 09:23
Bonjour,
Je travaille sur un projet dans lequel je dois capturer une vidéo, en extraire les images et appliquer un traitement à chacune d'entre elles. Pour le moment, j'ai réalisé chaque code indépendemment des autres (extraction des frames et enregistrement de celles-ci dans un dossier, recupération des frames dans ce même dossier avec FindNextFile et FindFirstFile et enfin mon traitement d'image appliqué à une image).
Je voudrais maintenant tout réunir et appliquer mon traitement à toutes les images du dossier. J'ai utilisé "fopen" pour le traitement sur une seule image afin de l'ouvrir et je ne sais pas quelle fonction utiliser pour ouvrir les images les unes après les autres afin d'y appliquer le traitement.
Il faudrait que j'insère mon traitement d'images dans le "do" mais je ne sais pas comment appliquer mon fopen : fopen(wfd.cFileName,"rb"); ??? Pour récupérer à chaque fois le nom de l'image qui est en cours de lecture.
cs_elo29
Messages postés70Date d'inscriptionmardi 7 février 2006StatutMembreDernière intervention26 avril 2006 24 avril 2006 à 14:31
OK merci, mais il faut juste mettre des guillemets("wfd.cFileName","wb") pour que ça marche. Cependant j'ai un autre souci, il ajoute les valeurs demandées au fur et à mesure des images. Par exemple, j'ai un seuil S=190 dans la première image et de S=20 dans la deuxième et lui va me mettre S=190+20= 210 pour la deuxième et ainsi de suite.
Vous n’avez pas trouvé la réponse que vous recherchez ?
yoyo269
Messages postés1403Date d'inscriptionlundi 23 février 2004StatutMembreDernière intervention11 janvier 20092 24 avril 2006 à 14:40
Surtout pas de guillemets !!! Sinon ça sert à rien de rechercher les fichiers qui sont dans ton dossier.
Si tu laisses comme ça, il va chercher à ouvrir un fichier qui s'appellerait "wfd.cFileName".
Pour ton pb de valeur, mets du code parce que avec ce que tu me dis je peux pas t'aider.
YOYO, @+.
[font= Comic Sans MS][size=3] [green][:D] YOYO [;)]/green=3Sans MS
cs_elo29
Messages postés70Date d'inscriptionmardi 7 février 2006StatutMembreDernière intervention26 avril 2006 24 avril 2006 à 14:55
Voici mon code et si quand je ne mets pas les "" il n'ouvre pas les images contenues dans le dossier images de mon projet. Il ne les ouvre que si je les sors du dossier.
#include <Windows.h>
#include
#include <stdio.h>
#define largeurimage 640
#define hauteurimage 480
#define N 501
#define M 54
int main () {
unsigned char *imageBMP;
imageBMP=(unsigned char *)malloc(3*largeurimage*hauteurimage*sizeof(unsigned char));
int *tempimBMP;
int **image;
int **imbsens;
unsigned char tmp[N];
int somme=0;
int seuil;
int i,j;
tempimBMP=(int*)malloc(largeurimage*hauteurimage*sizeof(int));
for(i=0;i<largeurimage*hauteurimage;i++)
{
tempimBMP[i]=(int)(0.23*imageBMP[i*3]+0.59*imageBMP[i*3+1]+0.11*imageBMP[i*3+2]);//Passage en niveau de gris
}
//Allocation mémoire de l'image
image=(int**)malloc(largeurimage*sizeof(int*));
for (i=0;i<hauteurimage;i++)
{
image[i]=(int*)malloc (largeurimage*sizeof(int));
}
//Allocation mémoire de l'image dans le bon sens
imbsens=(int**)malloc(largeurimage*sizeof(int*));
for (i=0;i<hauteurimage;i++)
{
imbsens[i]=(int*)malloc (largeurimage*sizeof(int));
}
//Initialisation de l'image à tester en niveau de gris (0-256)
for (i=0;i<hauteurimage;i++)
{
for(j=0;j<largeurimage;j++)
{
image[i][j]=tempimBMP[j+i*largeurimage];
}
}
//Calcul du seuil de l'image
for(i=0;i<hauteurimage;i++)
{
for (j=0;j<largeurimage;j++)
{
somme+=image[i][j];
}
}
seuil=2*somme/(hauteurimage*largeurimage);
for(i=0;i<hauteurimage;i++)
{
for (j=0;j<largeurimage;j++)
{
imbsens[i][j]=image[hauteurimage-1-i][j];
}
}
cout<<wfd.cFileName<<"\n";
} while (FindNextFile(hfind,&wfd));
FindClose(hfind);
yoyo269
Messages postés1403Date d'inscriptionlundi 23 février 2004StatutMembreDernière intervention11 janvier 20092 24 avril 2006 à 15:04
Change cette ligne :
hfind= FindFirstFile("c:\\images\\*.bmp",&wfd);
Sinon, j'y connais rien en traitement d'image mais si tu cherches à modifier qq chose aux images, je vois pas comment tu peux faire sans jamais écrire dans le fichier image.
YOYO, @+.
[font=Comic Sans MS][size=3] [green][:D] YOYO [;)]/green=3Sans MS
cs_elo29
Messages postés70Date d'inscriptionmardi 7 février 2006StatutMembreDernière intervention26 avril 2006 24 avril 2006 à 15:11
hfind=FindFirstFile("c:\\images\\*.bmp",&wfd);
ne marche pas, le dossier image a le chemin suivant : dans c:\Program Files\Microsoft Visual Studio\MyProjects\...\images alors ça ne suffit peut-être pas?? j'ai quelques lacunes quant à la définition des chemins...
cs_elo29
Messages postés70Date d'inscriptionmardi 7 février 2006StatutMembreDernière intervention26 avril 2006 24 avril 2006 à 17:37
Oui, j'en ai mis trois pour tester mon code et je ne vois pas non plus d'où ça peut venir... ce qui est bizarre c'est qu'il les prend en compte uniquement quand elles sont à la fois dans le dossier et hors du dossier.
cs_elo29
Messages postés70Date d'inscriptionmardi 7 février 2006StatutMembreDernière intervention26 avril 2006 24 avril 2006 à 17:45
C'est ce que je faisais et il affiche bien le nom correspondant à l'image qu'il est en train de traiter.
Avec hfind=FindFirstFile("c:\\Program Files\\Microsoft Visual Studio\\MyProjects\\...\\images\\*.bmp",&wfd);
il me faut quand même copier les images à l'extérieur du dossier pour que ça marche...