OpenCV Pixel Display-Wert

Habe ich folgenden code. Wenn ich das Programm starte, unbekannte Zeichen anstelle von pixel-Werten kommt, auf dem Bildschirm. Ich möchte die display-pixel Werte. Wie mache ich das? Danke.

#include <opencv2/opencv.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main()
{
    Mat image = imread("/home/fd/baby.jpg");
    for( int i = 0 ; i < image.rows ; i++)
    {
        for( int j = 0 ; j < image.cols ; j++ )
        {
            if(image.type() == CV_8UC1)
            {
                image.at<uchar>(i,j) = 255;
            }
            else if(image.type() == CV_8UC3)
            {
                cout << image.at<Vec3b>(i,j)[0] << " " << image.at<Vec3b>(i,j)[1] << " " << image.at<Vec3b>(i,j)[2] << endl;

                image.at<Vec3b>(i,j)[0] = 255;
                image.at<Vec3b>(i,j)[1] = 255;
                image.at<Vec3b>(i,j)[2] = 255;

                cout << image.at<Vec3b>(i,j)[0] << " " << image.at<Vec3b>(i,j)[1] << " " << image.at<Vec3b>(i,j)[2] << endl;
            }
            else
            {
                cout << "Anknown image format" << endl;
                return 0;
            }
        }
    }
    imshow("Result İmage", image);
    waitKey(0);
}

Dies ist das Ergebnis Bildschirm:

OpenCV Pixel Display-Wert

  • möglich, Duplikat der Warum ist std::cout Druck nicht der richtige Wert für meine int8_t Zahl?
  • Aber Sie wissen, Bild der Pixel Werte zwischen 0 und 255. Also ich denke mein problem ist nicht signiert oder unsigniert-pixel-Wert.
  • cout << int(uchar_value); aber besser noch, drucken Sie einfach die ganze Matte: cout << img << endl;
  • Es geht nicht darum, signed oder unsigned. Jeder Geschmack char gedruckt, wie ein einzelnes Zeichen, das nicht eine Reihe von Standard. Die Förderung der zu einer größeren Art verhindert dies. (Wenn cout << 'A' gedruckt 65 es würde zu Verwirrung führen. Schuld Abwärtskompatibilität.)
  • Danke @berak, ich habe mein problem gelöst wity Ihre Antwort. Danke. cout << int(Bild.at<Vec3b>(i,j)[0])
  • mögliche Duplikate von Warum "cout" funktioniert komisch für "unsigned char"?
  • Vec3b ist Vec<uchar, 3>, nicht Vec<int8_t, 3>. So ist es nicht eine doppelte, was Sie link. 🙂
  • warum sind Sie zuweisen 255 jedes mal?

InformationsquelleAutor fdas | 2015-04-25
Schreibe einen Kommentar