2012-03-31 148 views
1

我是新來的opencv ...我想找到矩陣中的最小值..但我不知道我犯的錯誤...請幫助我...謝謝提前...錯誤:雖然使用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); 
} 

錯誤是...在New_opencv.exe 0x757cd36f 未處理的異常:微軟C++異常:內存位置0x002bed0c CV ::例外..

回答

1

看來你是使用cvMinMaxLoc的錯誤參數。第一個參數應該是一個const CvArr指針,而不是一個浮點數組。

cvMinMaxLoc(data,&min_val,&max_val); 

您應該從您聲明的double數組中創建一個矩陣或CvArr。

+0

感謝您的回覆......但我在這個開放的cv.i中完全是新的可以得到它......你可以給出任何例子...這對我來說非常有用。 – aranga 2012-03-31 09:04:06

+1

當然,它會是這樣的: float modelPoint [] = {modelPoints [p] .x,modelPoints [p] .y,modelPoints [p] .z,1.0f}; CvMat modelPointMatrix = cvMat(4,1,CV_32F,modelPoint); 就像您對CvMat * orig的註釋行一樣。 – dannyxyz22 2012-04-02 02:35:23

+1

我懂了..謝謝你.... – aranga 2012-04-03 03:20:12