Je souhaite lire un fichier bmp en niveaux de gris 8 bits, reconstruire sa matrice de pixels, puis le traiter avec l'opérateur sobel. Cependant, le programme ne peut pas construire de matrice de pixels, il divise les blocs de pitcure d'origine. Quand je cours le programme comme ça;
./sobel cube.bmp output.bmp processed.bmp output.txt
cube.bmp est l'entrée output.bmp est la sortie de la matrice de pixels construits. proccessed.bmp est la sortie de l'opérateur sobel traité.
Code and Sample photos
Problèmes de lecture d'un fichier bmp en niveaux de gris 8bit en c
Répondre
Quelques commentaires:
Votre processed.bmp a l'apparence d'un bitmap écrit avec une taille de ligne incorrecte ou la taille du pixel. Vous pouvez le dire, car chaque ligne est décalée horizontalement.
vous traitez bitmaps en niveaux de gris, mais vous êtes en train de lire et d'écrire des pixels comme si elles ont des composantes RVB, i.e. .:
pixelArray[i][j].red = pixel.red;
pixelArray[i][j].green = pixel.green;
pixelArray[i][j].blue = pixel.blue;
Un pixel en niveaux de gris est une seule valeur de 8 bits.
J'ai essayé la structure PIXEL avec une seule valeur char non signée. Rien ne change, toujours le même résultat – anarhikos
L'accès aux pixels RVB n'est peut-être pas votre seul problème, mais c'est un problème. Vous devriez également regarder vos boucles de lecture/écriture - assurez-vous que vous ne sortez pas de la fin d'un de vos tableaux alloués. Incidemment, vous pouvez envisager d'allouer tous vos tableaux sous la forme d'un pointeur unique plutôt que d'un tableau de pointeurs alloués individuellement. – Seth
De plus, vous pouvez également essayer simplement de lire le bitmap et de sortir le même bitmap. Une fois que cela fonctionne, revenez en arrière et ajoutez le code pour appliquer l'opérateur Sobel. – Seth
peut-être pas la réponse que vous cherchez, mais, jetez un oeil à OpenCV.
En supposant que vous vous intéressiez aux étapes du traitement de l'image, pas spécifiquement à la manipulation BMP, cette bibliothèque s'occupe de tous les fichiers d'entrée/sortie, d'affichage, etc. pour vous. Il a aussi un bon filtre sobel.
Utiliser OpenCV semble ici utiliser une fusée Saturn pour grimper à un arbre. – Seth
@seth - true mais si l'OP s'intéresse aux filtres d'image, déconner avec les alignements d'en-têtes BMP revient à concevoir votre propre échelle pour grimper un arbre ;-) –
- 1. Transformer une bmp couleur en niveaux de gris:
- 2. lecture en niveaux de gris 16 bits TIFF
- 3. glDrawPixels en niveaux de gris?
- 4. Conversion en niveaux de gris en utilisant emguCV en C#
- 5. Incrustation en niveaux de gris avec OpenGL?
- 6. Convertir en niveaux de gris - trop lent
- 7. problème avec l'image en niveaux de gris
- 8. jquery en niveaux de gris sur hover
- 9. CSS - Colorisation en niveaux de gris Image
- 10. Afficher l'image en niveaux de gris en utilisant matplotlib
- 11. dossier lot d'images en niveaux de gris en utilisant php
- 12. Image en niveaux de gris avec projecteur coloré en JavaFX
- 13. Python 3: Conversion d'image en niveaux de gris
- 14. PHP: Conversion de png et gif en niveaux de gris
- 15. Niveaux de gris dans matlab
- 16. J2ME: Convertir une image PNG transparente en niveaux de gris
- 17. Enregistrement de png en niveaux de gris 16 bits indexés en C#
- 18. Conversion d'une image en niveaux de gris 8 bits Image RAW en Java
- 19. directshow Renderstream échoue avec des bitmaps en niveaux de gris
- 20. Java/JAI - enregistrer une image en niveaux de gris
- 21. Accélérer la conversion en niveaux de gris bitmap, OpenMP est-il une option en C#?
- 22. Ecriture d'une image en niveaux de gris 8 bits en C#
- 23. l'écriture de nouvelles données d'image dans un fichier après la conversion en niveaux de gris php
- 24. Impression en niveaux de gris dans Word 2007 à partir de C#
- 25. Dessin sur bitmap en niveaux de gris 8bpp (C++ non géré)
- 26. question de lecture du fichier en C++
- 27. lecture de fichier texte en C#
- 28. lecture du fichier en C#
- 29. Conversion de BMP en échelle de gris dans le module d'image Python
- 30. Problèmes d'entrée de fichier texte en C++
Je pense que la réponse réside dans la sortie de 'Print', qui est la seule chose que vous ne nous avez pas montré. –