When you open an image using
CV2 then it returns object of the type
numpy.ndarray but PIL's
PIL.JpegImagePlugin.JpegImageFile. So using that, you can basically differentiate which is used in your case (assuming there is no conversion or further processing involved which converted one image type to another).
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
As mentioned in the comment of this answer (by Mark Setchell) that instead of changing the PIL's
JpegImageFile class, we can also check
ndarray check and then decide - since PIL's class might change in future or they may simply use different type. The check would be exactly the same though.
img = imgcv if isinstance(img,numpy.ndarray): print('CV Image') else: print('PIL Image')
* Be the first to Make Comment