OpenCV: Erreur lors de l'utilisation de la fonction cvGoodFeaturesToTrack
Lorsque j'appelle la fonction cvGoodFeaturesToTrack pour trouver Harris coins, j'obtiens cette erreur:
OpenCV Error: Assertion failed (src.type() == CV_8UC1 || src.type() == CV_32FC1) in cornerEigenValsVecs, file /build/buildd/opencv-2.1.0/src/cv/cvcorner.cpp,line 254
terminate called after throwing an instance of 'cv::Exception'
what(): /build/buildd/opencv-2.1.0/src/cv/cvcorner.cpp:254: error: (-215) src.type() == CV_8UC1 || src.type() == CV_32FC1 in function cornerEigenValsVecs
Aborted
Il compile correctement, mais lorsque j'essaie de le lancer, il me donne cette erreur.
Voici le code:
IplImage* eig_image = 0;
IplImage* temp_image = 0;
IplImage *img1 = 0;
img1 = cvLoadImage("im1.pgm");
if(img1==0) {
printf("oh no!");
}
eig_image = cvCreateImage(cvGetSize(img1),IPL_DEPTH_32F, 1);
temp_image = cvCreateImage(cvGetSize(img1),IPL_DEPTH_32F, 1);
const int MAX_CORNERS = 100;
CvPoint2D32f corners[MAX_CORNERS] = {0};
int corner_count = MAX_CORNERS;
double quality_level = 0.1;
double min_distance = 1;
int eig_block_size = 3;
int use_harris = true;
double k = .4;
cvGoodFeaturesToTrack(img1, eig_image, temp_image,corners,&corner_count,quality_level,min_distance,NULL,eig_block_size,use_harris,k);
Pourquoi est-ce qui se passe et comment puis-je résoudre ce problème? J'apprécie toute l'aide!
OriginalL'auteur Choobs | 2011-10-06
Vous devez vous connecter pour publier un commentaire.
OpenCV essaie de vous dire que l'une des images que vous avez passé à cvGoodFeaturesToTrack() (l'erreur est en fait originaire de la fonction d'assistance cornerEigenValsVecs()) n'est pas du type requis CV_8UC1 ou CV_32FC1.
Je soupçonne img1 peut ne pas être le type dont vous avez besoin pour être. Quel est le type de la img1 de la matrice? Si c'est la couleur, alors il peut être de type CV_8UC3. Pensez à utiliser cvCvtColor pour en faire une image en niveaux de gris.
Ou, alternativement, vous pouvez d'abord charger l'image en niveaux de gris comme:
Content d'avoir pu aider! Parfois, une image peut paraître en niveaux de gris, mais finira par être enregistré comme une image RVB en ayant R = G = B = valeur d'Intensité. C'est probablement ce qui s'est passé. Lors de l'enregistrement des images, assurez-vous qu'ils sont de 8 bits en niveaux de gris.
OriginalL'auteur mevatron