Get et Set de Pixels de niveaux de Gris de l'image à l'Aide de Emgu CV
Je suis en train d'essayer d'obtenir et de définir les pixels d'une image en niveaux de gris en utilisant emgu Cv avec C#.
Si j'utilise une image de grande taille ce message d'erreur survient: "Index était en dehors des limites du tableau."
Si j'utilise une image de 200 x 200 ou moins, alors il n'y a pas d'erreur, mais je ne comprends pas pourquoi.
Voici mon code:
Image<Gray , byte> grayImage;
--------------------------------------------------------------------
for (int v = 0; v < grayImage.Height; v++)
{
for (int u = 0; u < grayImage.Width; u++)
{
byte a = grayImage.Data[u , v , 0]; //Get Pixel Color | fast way
byte b = (byte)(myHist[a] * (K - 1) /M);
grayImage.Data[u , v , 0] = b; //Set Pixel Color | fast way
}
}
--------------------------------------------------------------------
http://i306.photobucket.com/albums/nn262/neji1909/9-6-25565-10-39.png
Merci de m'aider et désolé, je ne suis pas bon en anglais.
OriginalL'auteur Kurosaki Pokky | 2013-06-08
Vous devez vous connecter pour publier un commentaire.
C'est parce que x et y sont inversés dans le tableau de Données. Vous devriez changer votre code de cette façon (inverser u et v):
Voir aussi Itérer sur les pixels d'une image avec emgu cv
Merci attribuer - mon problème était XY position de l'Image -, nous devons Type de reverse - en d'abord les données de parametr est Y et la deuxième est X : - P[y,x,Couleur chanel num]
OriginalL'auteur rold2007
vous n'êtes pas d'indexation par (x,y), mais en (ligne, col) - inversé. Lorsque vous avez utilisé 200x200 image qu'elle était la même, que vous avez utilisé la largeur ou la hauteur.
vous pouvez le faire en utilisant des pointeurs (beaucoup plus rapide) parce que si vous utilisez l'indexation EmguCV utilise en interne les appels d'opencv pour chaque pixel.
donc:
OriginalL'auteur dajuric