我想转换加载的图片
TestPicture = cv2.imread("flowers.jpg")
我想在示例http://pillow.readthedocs.io/en/4.0.x/reference/ImageFilter.html上使用变量
运行PIL过滤器(https://wellfire.co/learn/python-image-enhancements/)TestPicture
但是我无法将其转换回来,并且在这些类型之间排在第四位。
有没有办法进行这种转换?
opencv可以执行PIL包中的所有图像过滤器吗?
答案 0 :(得分:20)
是的,OpenCV更强大,更灵活,可以执行大部分可用的图像处理程序。所以可能这个过滤器可以用OpenCV>完成。但是,可能没有简单的API。
无论如何,就将图像格式从OpenCV转换为PIL而言,您可以使用Image.fromarray
作为:
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)
但是你必须记住,OpenCV遵循BGR
约定,PIL
遵循RGB
颜色约定,所以为了保持一致,你可能需要使用{{1}在转换之前。
答案 1 :(得分:4)
Pillow
和OpenCV
使用不同格式的图片。所以你不能只是在Pillow
中读取图像并使用它来操作OpenCV中的图像。
Pillow使用RGB
格式突出显示@ZdaR,OpenCV
使用BGR
格式。所以你需要一个转换器从一种格式转换为另一种格式。
PIL
图片转换为OpenCV
,请使用: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
图片转换为PIL
图片,请使用: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)