web-dev-qa-db-ja.com

opencv画像形式をPIL画像形式に変換しますか?

読み込んだ画像を変換したい

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

例のようにPILフィルター( http://pillow.readthedocs.io/en/4.0.x/reference/ImageFilter.html )を実行したい https:// wellfire.co/learn/python-image-enhancements/ 変数

TestPicture

しかし、これらをこれらのタイプ間で変換し直すことはできません。

この変換を行う方法はありますか?

OpencvはPILパッケージに含まれるすべての画像フィルターを実行できますか?

27
Arsenal Fanatic

はい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の規則に従い、PILRGB色の規則に従うため、一貫性を保つためにcv2.cvtColor()変換前。

18
ZdaR

PillowOpenCVでは、画像の形式が異なります。したがって、Pillowの画像を読み取り、それを使用してOpenCVで画像を操作することはできません。 Pillowは、@ ZdaRをハイライト表示したRGBフォーマットを使用し、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) 
3
alpha_989