使用cv2.imread()函数读取图像。图像应该当前路径下,或者给出完整的图像路径。第二个参数是一个标识,它用来指定图像的读取方式。以下是官方文档的参数说明:
它们分别对应的意思是:
提示:如果觉得以上标识太麻烦,可以简单的使用1,0,-1代替。(必须是整数类型)
import numpy as np
import cv2
# Load an color image in grayscale
# 使用灰度图方式加载一张彩色照片
img = cv2.imread('messi5.jpg',0)
警告:即使图像路径是错误的,它也不会抛出任何错误,但是返回的img会是None。
cv2.imread()接口读图像,读进来直接是BGR 格式,数据格式在 0~255,通道格式为(W,H,C)
读出的图片格式是unit8;value是numpy array
;图像数据是以BGR
的格式进行存储的,注意是BGR,通道值默认范围0-255,需要将存储类型改成RGB的形式才能正常显示原图的颜色。
import cv2
import matplotlib.pyplot as plt
from skimage import transform
import numpy as np
import skimage.io as io
train_dir = 'C:\\Users\\Administrator\\代码TRY\\1.jpg'
'''以cv2方式读取图片'''
image=cv2.imread(train_dir)
# 将图像通道分离开。
b,g,r = cv2.split(image)
# 以RGB的形式重新组合。
rgb_image = cv2.merge([r,g,b])
# 也可以使用这个函数直接转换成RGB形式。
# image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
io.imshow(rgb_image)
io.imread读出图片格式是uint8(unsigned int);value是numpy array;图像数据是以RGB的格式进行存储的,通道值默认范围0-255。
import cv2
import matplotlib.pyplot as plt
from skimage import transform
import numpy as np
import skimage.io as io
train_dir = 'C:\\Users\\Administrator\\代码TRY\\1.jpg'
'''以io.imread方式读取图片'''
# 以灰度读图并显示。
image = io.imread(train_dir,as_gray=True)
io.imshow(image)
用cv2.imread()和skimage.imread()读取的图片,使用cv2.imshow()和skimage.imshow()来显示。
尽量不要用plt.imshow()来显示cv2.imread()和skimage.imread()。
尤其是读取的图像为灰度图时,会发生显示的颜色与原图不一致。
from keras.preprocessing.image import ImageDataGenerator
import numpy as np
import os
import glob
import skimage.io as io
import skimage.transform as trans
import matplotlib.pyplot as plt
import cv2
img_arr1=io.imread("C:/Users/ZhangRR/Desktop/unet-master/data/membrane/train/image/0.png",as_gray=True)
img_arr2=cv2.imread("C:/Users/ZhangRR/Desktop/unet-master/data/membrane/train/image/0.png",cv2.IMREAD_GRAYSCALE)
print(img_arr1.shape)
print(img_arr2.shape)
io.imshow(img_arr1)
cv2.imshow("cv2.imshow()",img_arr2)
plt.figure()
plt.title("plt显示skimage.imread()")
plt.imshow(img_arr1)
plt.figure()
plt.title("plt显示cv2.imread()")
plt.imshow(img_arr2)
plt.show()
原图如下:
(1)cv2.imshow()
(3)plt.imshow()显示cv2.imread()读取的图像
(4)plt.imshow()显示skimage.imread()读取的图像
from keras.preprocessing.image import ImageDataGenerator
import numpy as np
import os
import glob
import skimage.io as io
import skimage.transform as trans
import matplotlib.pyplot as plt
import cv2
img_arr1=io.imread("C:/Users/ZhangRR/Desktop/unet-master/data/membrane/train/image/0.png",as_gray=True)
img_arr2=cv2.imread("C:/Users/ZhangRR/Desktop/unet-master/data/membrane/train/image/0.png",cv2.IMREAD_GRAYSCALE)
hmerge = np.hstack((img_arr1, img_arr2)) #水平拼接
vmerge = np.vstack((img_arr1 , img_arr2)) #垂直拼接
cv2.imshow("test1",hmerge)
cv2.imshow("test2",vmerge)
'''
# 或者下免得方式
io.imshow("test1",hmerge)
io.imshow("test2",vmerge)
'''
运行效果:
(1)水平拼接
(2)垂直拼接