2014-06-09 14 views
5

Wie kann ich numpy array in Graustufen opencv Bild in Python ändern? Nach einiger Verarbeitung bekam ich ein Array mit folgenden Attributen: max Wert ist: 0.99999999988, min Wert ist 8.269656407e-08 und Typ ist: <type 'numpy.ndarray'>. Ich kann es als Bild zeigen cv2.imshow() Funktion, aber ich kann es nicht in cv2.AdaptiveTreshold() Funktion übergeben, weil es falsche Art hat:Wie man numpy array in Graustufen ändert opencv image

error: (-215) src.type() == CV_8UC1 in function cv::adaptiveThreshold 

Wie kann ich konvertieren dieses np.array Format zu korrigieren?

Antwort

9

Wie die Behauptung besagt, erfordert adaptiveThreshold() ein Single-Channel-8-Bit-Bild.

Angenommen, Ihre Gleitkommazahlen Bild von 0 bis 1 reicht, die den Fall zu sein scheint, können Sie das Bild zu konvertieren, indem durch 255 multipliziert und Gießen zu np.uint8:

float_img = np.random.random((4,4)) 
im = np.array(float_img * 255, dtype = np.uint8) 
threshed = cv2.adaptiveThreshold(im, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 3, 0) 
Verwandte Themen