2012-03-31 18 views
1

Wie kann ich die in CVmat * gespeicherten Zahlen in opencv ausdrucken?
Ich habe ein Problem beim Zugriff auf Elemente von CVMAT. Bitte schlagen Sie eine Lösung vor!Zugriff auf Elemente von Cvmat * in opencv

+0

[Diese Antwort] (http://stackoverflow.com/a/17621084/1601291) kann auch hilfreich sein, um den Elementzugriff zu verstehen. – Aurelius

Antwort

1

hier mit i gegeben haben exp Code ..its für u kann hilfreich sein ...

CvMat mathdr, *mat = cvGetMat(img1, &mathdr); 
    CvSize size_im = cvGetSize(img1); 
    unsigned int M = img1->height; 
    unsigned int N = img1->width; 
    for(i=0;i<M;i++) 
    { 
     for (j =0;j<N;j++) 
     { 
      CvScalar scal = cvGet2D(mat,i,j); 
      printf("pixel val of the image is:%f %f %f\n",scal.val[0],scal.val[1],scal.val[3]); 
     } 
    } 
+0

Das funktioniert, aber ich verstehe nicht, warum du drei scal.val [0], scal.val [1], scal.val [3]) benutzt hast; nur scal.val [0] zeigt Ausgabe scal.val [1] und scal.val [2] geben nur Nullen! Bitte helfen – Priyanka

1

In Antwort auf Ihren Kommentar zu aranga,

ich nicht, warum ich immer haben u verwendet drei scal.val [0], scal.val [1], scal.val [3]); nur scal.val [0] zeigt Ausgang scal.val [1] und scal.val [2] sind nur Nullen geben

dies auf Ihr Bild hängt, oder genauer gesagt, wie viele Kanäle hat. Ein normales Bild hat 3 Kanäle (RGB, obwohl es tatsächlich umgekehrt ist, also BGR), deins scheint Graustufen zu sein, oder in jedem Fall nur Werte im ersten Kanal.

Und ich habe gerade überprüft, in der Tat, wenn Sie ausführen

cvtColor(src,dst,CV_RGB2GRAY); 

einen Drei-Kanal-RGB-Bild in Graustufen zu konvertieren, das Graustufenbild nur 1 Kanal. Aber vielleicht würden Sie wissen, warum Ihr Bild nur 1 Kanal verwendet ...

+0

Vielen Dank, gute Erklärung! – Priyanka