Ich möchte eine detaillierte Verarbeitung mit OpenCV durchführen, aber ich möchte eine Dateieingabe / -ausgabe mit Pillow durchführen! Oder besser gesagt, wenn Sie es mit OpenCV speichern, wird es eine Datei sein ... Es gibt Zeiten.
Deshalb habe ich ein Beispiel für Pillow-> OpenCV und OpenCV-> Pillow geschrieben.
from PIL import Image
import cv2
import numpy as np
#Laden Sie Bilder mit PIL-Daten
im = Image.open('t.jpg')
#In OpenCV-Daten konvertieren
ocv_im = np.asarray(im)
#Speichern Sie mit OpenCV
cv2.imwrite("t_ocv.jpg ",ocv_im)
#In PIL-Daten konvertieren
pil_im = Image.fromarray(ocv_im)
#Als PIL speichern
pil_im.save("t_pil.jpg ")
Die Datei, die herauskam.
t_ocv.jpg
t_pil.jpg
Aus irgendeinem Grund ist t_ocv.jpg blau, was so nah wie möglich an Blau liegt.
Als ich es nachgeschlagen habe, sagte OpenCV, dass die Farbe BGR anstelle von RGB war.
Wenn Sie also ocv_im in RGB konvertieren, gibt es kein Problem.
cv2.imwrite("t_ocv.jpg ",ocv_im)
↓
cv2.imwrite("t_ocv.jpg ",ocv_im[:, :, ::-1].copy())
Lösung. das ist alles.