Ich lade Bilder von einer URL in OpenCV. Einige Bilder sind PNG und haben vier Kanäle. Ich suche nach einer Möglichkeit, den 4. Kanal zu entfernen, falls er existiert.So entfernen Sie den 4. Kanal von PNG-Bildern
Dies ist, wie ich das Bild laden:
def read_image_from_url(self, imgurl):
req = urllib.urlopen(imgurl)
arr = np.asarray(bytearray(req.read()), dtype=np.uint8)
return cv2.imdecode(arr,-1) # 'load it as it is'
Ich will nicht die cv2.imdecode(arr,-1)
ändern, sondern ich möchte, ob das geladene Bild einen vierten Kanal hat zu überprüfen, und wenn ja, es entfernen.
Etwas Ähnliches, aber ich weiß nicht, wie eigentlich den vierten Kanal
def read_image_from_url(self, imgurl):
req = urllib.urlopen(imgurl)
arr = np.asarray(bytearray(req.read()), dtype=np.uint8)
image = cv2.imdecode(arr,-1) # 'load it as it is'
s = image.shape
#check if third tuple of s is 4
#if it is 4 then remove the 4th channel and return the image.
Ja, es gibt bestimmte Bilder, die ich als -IS wollen. Deshalb zögere ich, die Flagge zu ändern, aber überprüfe, ob es eine vierte Ebene gibt und entferne sie dann. – Anthony
dann sollten Sie fragen, wie man überprüft, ob es einen 4. Kanal gibt, nicht, wie man ihn entfernt ... – Piglet
Dieses Flag wird auch die Bittiefe beeinflussen, so dass es keine gute Lösung zum Entfernen des Alphakanals ist –