python︱matplotlib使用(读入、显示、写出、opencv混用、格式转换...)

来源:互联网 发布:网络女主播直播洗澡 编辑:程序博客网 时间:2024/06/03 17:54

opencv和matplotlib是比较常用的图像分析模块。在Ipython里面,opencv不能直接显示出来,所以有些时候会借助matplotlib来显示。
.

1、matplotlib的读入与显示

import matplotlib.pyplot as plt  import numpy as np  from PIL import Image  img = Image.open('lena.png') # 读取的图像显示的<matplotlib.image.AxesImage object at 0x7f9f0c60f7f0>  img.show()  img.format  region = img.transpose(Image.ROTATE_180) #翻转  out = img.resize((128, 128)) # 改变大小  out1 = img.rotate(45) #旋转  plt.imshow(img) # 显示  mean=np.array([104., 117., 124.]) #均值  np.shape(img)  img1 -= mean  plt.imshow(img1)  

Image.open之后,是以

2、Image.open格式<—>矩阵

image.open转矩阵

img = Image.open('lena.png')img1 = np.array(img)  

矩阵转 image.open

img = Image.open('lena.png')img1 = np.array(img)  Image.fromarray(img1 ) 

3、字节bytes<—>image.open格式以及矩阵格式

有的图片读入方式以.read(),读入之后为Bytes类型。

def get_file_content(filePath):    with open(filePath, 'rb') as fp:        return fp.read()

这是要转换为图像格式以及array格式该怎么操作(BytesIO字节读入函数):

    # 转image.open格式——常规from PIL import Image, ImageDraw, ImageFontfrom io import BytesIOimport numpy as npImage.open(BytesIO(get_file_content(pic_path)))    # 转成array格式——常规np.array(Image.open(BytesIO(get_file_content(pic_path))))

BytesIO返回的格式为:<_io.BytesIO at 0x137c4f6f68>
.

4、PIL格式保存

img = Image.open('lena.png')img .save(savepath)

.

5、在ipython中显示图片

im=Image.open('/home/Picture/test.jpg')im.show()

有些时候,show()出来,还没有出来,这时候需要加上:

%matplotlib inline

.

6、图像裁剪、旋转、改变

im=Image.open('/home/Picture/test.jpg')box=(100,100,500,500)# box=(x,y,x+w,y+h)region=im.crop(box) #此时,region是一个新的图像对象。
img = Image.open('lena.png') # 读取的图像显示的region = img.transpose(Image.ROTATE_180) #翻转  out = img.resize((128, 128)) # 改变大小  out1 = img.rotate(45) #旋转  plt.imshow(img) # 显示  

.

7、opencv打开的图像用plt显示与保存

显示可以直接imshow

import matplotlib.pyplot as pltimport cv2img = cv2.imread('01.jpg',cv2.IMREAD_COLOR)%matplotlib inlineplt.subplot(111)plt.imshow(img)

除了用cv2.imwrite保存cv2读的内容,保存可以用misc (不太对)

cv2.imwrite('img.jpg',img, [int(cv2.IMWRITE_JPEG_QUALITY), 100] )
from scipy import misc# numpy直接保存出来misc.imsave('img.jpg', img)

当然会出现通道错误,比如(左图是misc保存的,右图是cv2.imwrite保存的):
这里写图片描述

阅读全文
0 0
原创粉丝点击