通过将PIL的数据结构和CV2所支持的numpy互相转换,可以及其方面的调用一些双方都没有的库。
举个例子,PIL下方便的锐化功能实现:
http://pillow.readthedocs.io/en/3.4.x/reference/ImageEnhance.html#PIL.ImageEnhance.Sharpness
以及cv2下方便的sobel..feature extration器件:
https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_imgproc/py_contours/py_contour_features/py_contour_features.html
实现方式:
1) 基础PIL操作
# !/usr/bin/python # -*- coding:utf-8 -*-
from PIL import Image
# 加载图像(路径必须双\\)
pil_img = Image.open('D:\\1.tif')
# 显示
pil_img.show()
# 另存为 outfile = "2"+".jpg"
pil_img.save(outfile)
2)PIL2Numpy
# !/usr/bin/python # -*- coding:utf-8 -*-
from PIL import Image from numpy import *
# 加载图像(路径必须双\\)
pil_img = Image.open('D:\\1.tif')
# 转化为数组
img = array(pil_img)
# 获取图像参数
height,width = img.shape[0:2]
# 访问像素
value = img[i,j,k]
#[行,列,channel]
3)PIL2Numpy2CV2
Python 2.7中PIL.Image转换为OpenCV支持的Image格式
pil_image = PIL.Image.open('image.jpg')
cv_image = cv2.cvtColor(numpy.asarray(pil_image), cv2.COLOR_RGB2BGR)
4)Numpy2PIL
pil_im2 = Image.fromarray(uint8(img))