将opencv图像格式转换为PIL图像格式?

Ars*_*tic 22 python opencv image-processing type-conversion python-imaging-library

我想转换加载的图像

TestPicture = cv2.imread("flowers.jpg")
Run Code Online (Sandbox Code Playgroud)

我想在示例https://wellfire.co/learn/python-image-enhancements上运行PIL过滤器(http://pillow.readthedocs.io/en/4.0.x/reference/ImageFilter.html)/与变量

TestPicture
Run Code Online (Sandbox Code Playgroud)

但是我无法将其转换回来并且在这些类型之间排在第四位.

有没有办法做这个转换?

opencv可以执行PIL包中的所有图像过滤器吗?

Zda*_*daR 36

是的,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)
Run Code Online (Sandbox Code Playgroud)

但是你必须记住,OpenCV遵循BGR约定并PIL遵循RGB颜色约定,所以为了保持一致,你可能需要cv2.cvtColor()在转换之前使用.


alp*_*989 5

PillowOpenCV使用不同格式的图像。因此,您不能只是读入图像Pillow并使用它在OpenCV中操纵图像。枕头使用RGB@ZdaR高亮显示OpenCVBGR格式,并使用该格式。因此,您需要一个转换器将一种格式转换为另一种格式。

要从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) 
Run Code Online (Sandbox Code Playgroud)

要从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) 
Run Code Online (Sandbox Code Playgroud)

  • 好吧,它不会将图像转换为PIL格式,只会将图像的通道顺序从BGR更改为RGB。 (13认同)
  • 您的第二个片段中的OpenCV-> PIL转换在哪里?我想你忘了主线:) (2认同)