将opencv图像格式转换为PIL图像格式?
image-processing
opencv
python
python-imaging-library
5
0

我想转换加载的图像

TestPicture = cv2.imread("flowers.jpg")

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

TestPicture

但我无法在这些类型之间将其转换为第四位。

有没有办法进行这种转换?

opencv可以做PIL软件包中的所有图像过滤器吗?

参考资料:
Stack Overflow
收藏
评论
共 2 个回答
高赞 时间 活跃

PillowOpenCV使用不同格式的图像。因此,您不能只在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=Image.fromarray(
                          cv2.cvtColor(opencv_image, cv2.COLOR_BGR2RGB)
                         )
收藏
评论

是的,OpenCV更加健壮和灵活,并且可以执行大多数可用的图像处理例程。因此,此过滤器可以通过OpenCV完成>,但是,可能没有直接的API。

无论如何, Image.fromarray图像格式从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颜色约定,因此为了保持一致,您可能需要在转换前使用cv2.cvtColor()

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号