img = cv2.imread(img_path) #读入一张图片,返回一个(H,W,C)的ndarray
cv2.imshow(name,img) #显示一张图片
cv2.waitKey() #必须加上,不然图片无法显示
cv2.destroyAllWindows() #执行键盘动作后关闭窗口
1.cv2.imread()返回一个ndarray
补充 :ndarray即矩阵类型,由np.array(…)创建
arr1 = np.array([[1,2,3],[1,2,4],[1,2,5]])
print(type(arr1))
>>> <class 'numpy.ndarray'>
print(arr1[0])
>>>[1 2 3]
可查看返回ndarray的维数
img = cv2.imread(img_path)
print(img)
print(type(img))
print(img.shape)
>>> <class 'numpy.ndarray'>
>>>(550, 550, 3) #此处实为550x 550x3
2.cv2.split(img) 函数将3通道图片分割,返回三个矩阵。
因为cv2.imread是以bgr模式读取的,此时的三个通道对应b,g,r。
cv2.merge([c1,c2,c3]) 进行通道合并,可将其转换为rgb模式,用于plt的读取
或者使用img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) 直接转换
img = cv2.imread(img_path)
b,g,r = cv2.split(img) #通道拆分:切分成b,g,r三个通道
img_rgb = cv2.merge([r,g,b]) #通道合并:转化为rgb三个通道
#img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) 也可以
3.显示图片一定不要忘了加
cv2.waitKey()
cv2.destroyAllWindows()
4.cv2.cvtColor(a1,a2) 颜色空间转换函数
a1为要进行操作的img,a2为转换格式
img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
img_GRAY = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2GRAY)
故将灰度图像转化为三通道图像(如mnist)可用
train_image = [cv2.cvtColor(cv2.resize(img,(image_size,image_size)),cv2.COLOR_GRAY2BGR) for img in x_train]
import os
from PIL import Image
import matplotlib.pyplot as plt
img = Image.open(img_path) #返回一个PIL图像对象
print(type(img))
>>> <class 'PIL.JpegImagePlugin.JpegImageFile'>
print(img)
>>> <PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=600x600 at 0x17C6F4F44E0>
import pylab
arr_img = pylab.array(img) #使用pylab中的array函数可将PIL图像转化为矩阵
print(type(arr_img))
>>> <class 'numpy.ndarray'>
20191025补充
PIL的Image函数导入的图片为JpegImageFile格式,没有shape属性,
需要使用np.array(image)转化为数组
可得到图片的数组表示(H,W,C)
from PIL import Image
import numpy as np
image = Image.open('bird.jpg')
image = np.array(image)
print(image.shape)
>>>(1200,800,3)
此处是一个,plt和cv2导入图片的比较
img1 = Image.open(img_path)
arr_img1 = pylab.array(img1)
img2 = cv2.imread(img_path)
print(arr_img1.shape)
>>>(600, 600, 3)
print(img2.shape)
>>>(600, 600, 3)
plt.figure('rabbit')
plt.imshow(img)
plt.axis('off') # 关掉坐标轴为 off
plt.title('image') # 图像题目
plt.show()
1 plt.figure() 函数用于创建一个图像
此处用于显示图片的话可以不定义参数或者定义图像名
2.plt.imshow()函数负责对图像进行处理,并显示其格式,但是不能显示。
其后跟着plt.show()才能显示出来。
plt.figure()
plt.imshow(img)
plt.show()
反正就,这三个都写上,肯定是没问题的,但在实验中,只写plt.imshow()也可以显示图片
3.
plt.axis(‘off’) # 关掉坐标轴为 off
plt.title(‘image’) # 图像题目
4.绘图
plt.imshow(img) #创建画布--一个图像
x = [100,100,400,400]
y = [200,500,200,500]
plt.plot(x,y,'r*') #绘制红色 星形点
plt.plot(x[:2],y[:2]) #绘制连接前两个点的线
plt.show() #显示图像