2010-05-10 21 views
2

Je suis en train de travailler sur le livre "Learning OpenCV" de la série O'Reilly et j'essaie d'effectuer un échantillon de détection de bord.Canny détection de bord - images en niveaux de gris toujours à venir en tant que 3 canaux, inutilisable?

Toute image en niveaux de gris que je choisis semble avoir 3 canaux, et à ma connaissance, canny ne fonctionne qu'avec des images à canal unique, donc cela échoue toujours. J'utilise même les images fournies par OpenCV.

Voici mon code ..

IplImage* doCanny(IplImage* in, double lowThresh, double highThresh, double aperture) 
{ 
    if(in->nChannels != 1) 
     return(0); //canny only handles gray scale images 
    IplImage* out = cvCreateImage(cvSize(in->width, in->height), IPL_DEPTH_8U, 1); 
    cvCanny(in, out, lowThresh, highThresh, aperture); 
    return(out); 
}; 

IplImage* img = cvLoadImage("someGrayscaleImage.jpg"); 
IplImage* out = doCanny(img, 10, 100, 3); 

Pourquoi cela me donne toujours des images 3 canaux? Comment puis-je resoudre ceci?

Répondre

2

Vous pouvez utiliser cette méthode avec un autre paramètre

IplImage* cvLoadImage(const char* filename, int iscolor=CV_LOAD_IMAGE_COLOR) 

#define CV_LOAD_IMAGE_COLOR  1 

#define CV_LOAD_IMAGE_GRAYSCALE 0 

#define CV_LOAD_IMAGE_UNCHANGED -1 

Le paramètre par défaut est l'image de charge avec la couleur. Ce que vous devez faire est de le charger avec niveaux de gris

Voici un exemple

cvLoadImage("yourimage.jpg", CV_LOAD_IMAGE_GRAYSCALE); 

Voici l'explication de détails pour cette méthode. Vous pouvez regarder ici pour plus de détails: Open CV 2.0 References

scolor - Type de couleur spécifique de l'image chargée: si $> 0 $, l'image chargée doit être une image couleur à 3 canaux; si 0, l'image chargée est forcée d'être en niveaux de gris; Si $ < 0 $, l'image chargée sera chargée telle quelle (notez que dans l'implémentation actuelle, le canal alpha, le cas échéant, est retiré de l'image de sortie, par exemple l'image RGBA à 4 canaux sera chargée en RVB).

+1

génial, merci! Je n'ai pas réalisé que ce paramètre était en défaut. – cvcentral

+0

cette page est une bonne page pour OpenCV. Je l'ai toujours utilisé quand je travaillais avec openCV avant – vodkhang