2012-03-31 4 views
1

Je suis nouveau à l'opencv ... je veux trouver la valeur minimale dans la matrice .. mais je ne sais pas où je me suis trompé ... s'il vous plaît aidez-moi ... merci à l'avance ...Erreur: Lors de l'utilisation cvMinMaxLoc

int main(int argc,char** argv[]) 
{ 
    CvMat *mat, mathdr; 
    double data[] = { 11, 12, 13, 14, 
         21, 22, 23, 24, 
         31, 32, 33, 34 }; 
     ////CvMat* orig = &cvMat(3, 4, CV_64FC1, data); 
    ///mat = cvReshape(orig,&mathdr,1,12); 
    ///CvMat* mat2 = cvCreateMat(orig->cols,orig->rows,mat->type); 
    ///cvTranspose(orig,mat2); 
    double min_val; 
    double max_val; 
    cvMinMaxLoc(data,&min_val,&max_val); 
    printf("Min val %f \n",min_val); 
    printf("Max Val %f \n",max_val); 
    return 0; 
///cvDoubleMatPrint(orig); 
} 

erreur est ... exception non gérée à 0x757cd36f dans New_opencv.exe: Microsoft C++ exception: cv :: exception à l'emplacement mémoire 0x002bed0c ..

Répondre

1

il semble que vous utilisez le mauvais paramètre à cvMinMaxLoc. Le premier paramètre doit être un pointeur const CvArr, et non un tableau float.

cvMinMaxLoc(data,&min_val,&max_val); 

Vous devez créer une matrice ou un CvArr hors du double tableau que vous avez déclaré.

+0

Merci pour votre réponse ... Mais je suis totalement nouveau dans ce cv.je peux l'obtenir ... Pouvez-vous donner un exemple pour cela ... ce sera très utile pour moi. – aranga

+1

Bien sûr, ce serait quelque chose comme ceci: float modelPoint [] = {modelPoints [p] .x, modelPoints [p] .y, modelPoints [p] .z, 1.0f}; CvMat modelPointMatrix = cvMat (4, 1, CV_32F, modelPoint); exactement comme votre ligne commentée sur CvMat * orig. – dannyxyz22

+1

Je l'ai eu..Merci .... – aranga