gpt4 book ai didi

python - 区分 PIL 和 CV2 图像

转载 作者:行者123 更新时间:2023-12-02 18:12:27 24 4
gpt4 key购买 nike

我希望使用 TF 模型,但图像预处理需要 PIL 图像。我希望我的程序能够接受 PIL 和 CV2 图像。我知道如何将 CV2 图像转换为 PIL 图像,但我不知道如何区分它们以了解何时应用转换。所以我需要一个像这样的条件:

if image is PIL.Image:
...
elif image is CV2.Image:
conversion
...

有人有办法吗?

最佳答案

当您使用CV2打开图像时,它会返回numpy.ndarray类型的对象,但PIL的Image.open()返回PIL.JpegImagePlugin.JpegImageFile。因此,使用它,您基本上可以区分在您的情况下使用哪个(假设没有涉及将一种图像类型转换为另一种图像类型的转换或进一步处理)。

import cv2
from PIL import Image
from PIL import JpegImagePlugin

imgcv = cv2.imread('./koala.jpg')
print(type(imgcv))

imgpil = Image.open('./koala.jpg')
print(type(imgpil))

img = imgpil
if isinstance(img,JpegImagePlugin.JpegImageFile):
print('PIL Image')
else:
print('Not PIL')

输出:

<class 'numpy.ndarray'>
<class 'PIL.JpegImagePlugin.JpegImageFile'>
PIL Image

正如这个答案的评论中提到的(Mark Setchell),我们也可以检查 ndarray 检查然后决定,而不是更改 PIL 的 JpegImageFile 类 - 因为PIL 的类将来可能会发生变化,或者它们可能只是使用不同的类型。不过支票是完全相同的。

img = imgcv
if isinstance(img,numpy.ndarray):
print('CV Image')
else:
print('PIL Image')

关于python - 区分 PIL 和 CV2 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72091554/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com