2010-05-12 7 views
6

Ich versuche, die "neue" 2.0 C++ Version von OpenCV zu verwenden, aber alles ist sonst wie in der einfachen C-Version. Ich habe ein Problem mit dem Ändern der Werte im Bild.OpenCV (C++) Multi-Kanal-Element Zugriff

Das Bild ist CV_8UC3.

for (int i=0; i<image.rows; i++) 
{ 
    for (int j=0; j<image.cols; j++) 
    { 
     if (someArray[i][j] == 0) 
     { 
      image.at<Vec3i>(i,j)[0] = 0; 
      image.at<Vec3i>(i,j)[1] = 0; 
      image.at<Vec3i>(i,j)[2] = 0; 
     } 
    } 
} 

Es funktioniert nicht. Was mache ich falsch???

Vielen Dank!

+0

Eine weitere Möglichkeit, unter Verwendung werden, 'Bild (cv :: Rect (x, y, Breite, Höhe)) = cv :: Scalar (r, g, b);' wenn Sie möchten eine bestimmte Region mit einer Farbe für den Typ 'CV_8UC3' festlegen. –

Antwort

14

Sollten Sie nicht Vec3b anstelle von Vec3i verwenden?

CV_8UC3 bedeutet Ihr Bild ist 8 Bit, 3 Kanäle, unsigned char. Während Vec3i ist für 3 Kanäle Integer und Vec3b ist für 3 Kanäle unsigned char.

Also ich denke, Sie sollten Vec3b