Je veux convertir une image chargée
TestPicture = cv2.imread("flowers.jpg")
Je voudrais exécuter un filtre PIL ( http://pillow.readthedocs.io/en/4.0.x/reference/ImageFilter.html ) comme sur l'exemple https://wellfire.co/learn/python-image-enhancements/ avec la variable
TestPicture
mais je suis incapable de le reconvertir et le quatrième entre ces types.
Y at-il un moyen de faire cette conversion?
Est-ce que l'opencv peut faire tous les filtres d'image qui sont dans le paquet PIL?
Oui, OpenCV est plus robuste et flexible et peut exécuter la plupart des routines de traitement d'image disponibles. Ce filtre peut donc probablement être utilisé avec OpenCV> Cependant, il peut ne pas exister d'API simple.
Quoi qu'il en soit, en ce qui concerne la conversion du format d'image OpenCV en PIL, vous pouvez utiliser Image.fromarray
comme:
import cv2
import numpy as np
from PIL import Image
img = cv2.imread("path/to/img.png")
# You may need to convert the color.
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
im_pil = Image.fromarray(img)
# For reversing the operation:
im_np = np.asarray(im_pil)
Cependant, vous devez garder à l'esprit que, OpenCV suit la convention BGR
et que PIL
suit la convention de couleur RGB
. Par conséquent, pour conserver la cohérence, il peut être nécessaire d'utiliser cv2.cvtColor()
avant la conversion.
Pillow
et OpenCV
utilisent différents formats d'images. Vous ne pouvez donc pas simplement lire une image dans Pillow
et l'utiliser pour la manipuler dans OpenCV . Pillow utilise le format RGB
comme @ZdaR mis en surbrillance, et OpenCV
utilise le format BGR
. Vous avez donc besoin d’un convertisseur pour convertir d’un format à un autre.
PIL
en OpenCV
, utilisez:import cv2
import numpy as np
from PIL import Image
pil_image=Image.open("demo2.jpg") # open image using PIL
# use numpy to convert the pil_image into a numpy array
numpy_image=numpy.array(pil_img)
# convert to a openCV2 image, notice the COLOR_RGB2BGR which means that
# the color is converted from RGB to BGR format
opencv_image=cv2.cvtColor(numpy_image, cv2.COLOR_RGB2BGR)
OpenCV
en une image PIL
, utilisez:import cv2
import numpy as np
from PIL import Image
opencv_image=cv2.imread("demo2.jpg") # open image using openCV2
# convert from openCV2 to PIL. Notice the COLOR_BGR2RGB which means that
# the color is converted from BGR to RGB
pil_image=cv2.cvtColor(opencv_image, cv2.COLOR_BGR2RGB)