2016-08-25 13 views
0

Ich verwende diesen Code, um die Intensität von OpenCV Mat-Pixeln zu drucken. Ich bekomme jedoch Zeichen auf der Konsole anstelle von Werten zwischen 0 und 250 gedruckt:Wie kann ich die Farbe von Pixeln in meinem Bild erhalten (graues Bild)?

image1 = imread(nameJpg, 0); 
image2 = imread(lastJpg, 0); 
for (int j = 0; j < image1.rows-10; j += 1){ 
    for (int i = 0; i < image1.cols-10; i += 1) { 
     std::cout << "" << image1.at<uchar>(i, j) << " " <<i mage1.at<uchar>(i, j)<<"\n"; 
    } 
} 

Wie kann ich dieses Problem lösen?

+0

Zeigen Sie uns, was Sie als [mcve] versucht haben. –

+0

Haben Bild 1 und 2 dieselbe Größe? –

+0

ja. gleiche Größe. –

Antwort

2

Sie wollen es zu gieße int, wie zum Beispiel:

(int)image.at<uchar>(i, j)

Sie können dies testen, indem Sie auf die ASCII table verweisen.

bearbeiten

Die Quelle des Fehlers ist, den Sie erwähnen, aus, wie Sie die Pixel zuzugreifen. Ich sollte für die Zeilen und j für die Spalten sein.

for (int i = 0; i < src.rows; i++) { 
    for (int j = 0; j < src.cols; j++) 
     cout << (int)src.at<uchar>(i, j) << " "; 
    cout << endl; 
} 
0

In Graubild, die Pixelintensität zwischen 0 und 255 nicht 250

Wenn Sie meinen, dass Sie den Wert eines bestimmten Pixels erhalten möchten, können Sie diese verwenden:

auto image=cv::imread(path,CV_LOAD_IMAGE_GRAYSCALE); 
auto pixel_value=image.at<uchar>(row_idx,col_idx); 

nach OPs edit:

Wenn Sie statt einer Zahl zu erhalten, während das Drucken, das statt:

auto pixel_value= static_cast<unsigned int>(image.at<uchar>(row_idx,col_idx)); 
+0

es ist mir der Fehler: Syntaxfehler: Bezeichner 'unsischen' –

+0

vielleicht hatte ich nicht die richtige enthalten? Was ist das? –

+1

"unsstanden" war ein Tippfehler .. es ist "unsigniert" –

Verwandte Themen