Opencv matrix-Werte-Anzeige
hier ist das problem: ich lade ein Bild mit Graustufen und OpenCV v. 2.4.2.
Jetzt will ich zum Beispiel wissen den Wert des pixels an position (0,0).
Ich habe versucht:
Mat image=imread("00001.jpg",1);
cvtColor(image,image,CV_RGB2GRAY);
int a=image.at<unsigned>(0,1);
printf("%d ",a);
Diese tatsächlich nicht funktioniert. Wie man die pixel Wert mit einem beliebigen Datentyp (CV_8U, CV_32S ...)?
Dank!!!
- Sie sind mit (0,1) anstelle von (0,0) ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Machen Sie zwei Fehler hier.
Beim Lesen der Bild, geben Sie 1 als input-Argumente. Wie bereits erläutert, für imread, kann die Funktion Lesen Sie Bild in drei verschiedenen Formaten.
für Ihren Fall müssen Sie
CV_LOAD_IMAGE_GRAYSCALE
als zweites argumentIm nächsten Schritt, wo Sie verwenden:
image.at<unsigned>(0,1);
dem entspricht nichts. verwenden Sie<unsigned>
aber der compiler sagt "UNSIGNED? UNSIGNED was???"Ich glaube, einen besseren Weg, dies zu tun ist, um die Verwendung der richtigen labels wie
CV_LOAD_IMAGE_COLOR
oderCV_LOAD_IMAGE_GRAYSCALE
. Im Beispiel unten, ich lese das Bild in einen Kanal (CV_LOAD_IMAGE_GRAYSCALE
), die automatisch konvertiert es in Graustufen.Gibt es einen einfachen Weg, dies zu tun.
Matte hat Matte.Daten gibt einen Zeiger bezieht sich auf die original-Daten-matrix.
Bekommen Pixelwerte N-te Zeile und mth Spalte,
So, das ist etwa ein farbiges Bild. für Graustufen-Bilder,
Lesen Sie mehr auf dieser Beitrag.
Könnten Sie versuchen, herauszufinden, was opencv haben stellen Sie Sie mit, um eine bessere Vorstellung, welche Art zu verwenden:
Überprüfen Sie auch diese Diskussion über element zugreifen.
unsigned char
stellt Werte von 0..255. Unsigned integer darstellen würde Werte von 0..65536 wäre CV_16UC1.Erstens, es gibt keinen generischen Weg, um den pixel-Wert auf diese Weise. Bedeutung, die Sie stets angeben müssen, die richtige Art von von Ihrem Werte, wenn Sie gehen, um
at
. In diesem Fall sollten Siea=image.at<uchar>(0,1);
da Sie konvertieren Sie Ihre Bild, um die unsigned 8-bit Graustufenbild (1 Kanal).Sollten Sie auch wahrscheinlich CV_BGR2GRAY statt RGB2GRAY, da OpenCV verwendet, die die BGR als die Kanal-Reihenfolge.
Könnten Sie auch Lesen, Ihr Bild als Graustufen " aus starten und verwenden
uchar
wieder: