OpenCV findContours in Python

8

Ich arbeite in Python auf openCV 3.0. Um die größte weiße Pixelregion zu finden, wird zunächst ein Grauwertbild in ein Binärbild umgewandelt.

%Vor%

Aber es zeigt Fehler wie folgt.

  

cv2.error: .... / opencv / modules / imgproc / src / contours.cpp: 198: Fehler: (-210) [Start] FindContours unterstützt nur CV_8UC1 Bilder, wenn Modus! = CV_RETR_FLOODFILL sonst nur CV_32SC1 Bilder unterstützt in der Funktion cvStartFindContours.

    
Kaira 11.01.2016, 08:15
quelle

1 Antwort

1

Es sieht so aus, als ob das in den Kommentaren beantwortet wurde, aber nur um die Frage als beantwortet zu markieren:

CV_8UC1 bedeutet 8-Bit-Pixel, unsigniert und nur einen Kanal, also Graustufen. Es sieht so aus, als ob Sie es mit 3 Farbkanälen oder CV_8UC3 einlesen. Sie können den Bildtyp überprüfen, indem Sie img.dtype und img.shape drucken. Der dtype sollte uint8 sein, und die Form sollte (#, #) sein und zwei Dimensionen angeben. Ich nehme an, Sie werden sehen, dass die Form (#, #, 3) für Ihr Bild unverändert aussieht und drei Farbkanäle anzeigt.

Wie @ user3515225 sagte, können Sie das beheben, indem Sie das Bild als Graustufen mit cv2.imread('img.png', cv2.IMREAD_GRAYSCALE) einlesen. Das setzt voraus, dass du nirgendwo anders Farbe verwendest. Wenn Sie eine separate Graustufen Kopie des Bildes wünschen, ersetzen Sie stattdessen gray = img.copy() durch gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) .

    
DirtBird 09.02.2018 20:18
quelle

Tags und Links