Python OpenCV中的numpy與圖像類型轉(zhuǎn)換操作
Python OpenCV存儲圖像使用的是Numpy存儲,所以可以將Numpy當做圖像類型操作,操作之前還需進行類型轉(zhuǎn)換,轉(zhuǎn)換到int8類型
import cv2import numpy as np# 使用numpy方式創(chuàng)建一個二維數(shù)組img = np.ones((100,100))# 轉(zhuǎn)換成int8類型img = np.int8(img)# 顏色空間轉(zhuǎn)換,單通道轉(zhuǎn)換成多通道, 可選可不選img = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)cv2.imwrite('demo.jpg', img)
補充知識:Python中讀取圖片并轉(zhuǎn)化為numpy.ndarray()數(shù)據(jù)的6種方式
方式:返回類型
OpenCV np.ndarrayPIL PIL.JpegImagePlugin.JpegImageFilekeras.preprocessing.image PIL.JpegImagePlugin.JpegImageFileSkimage.io np.ndarraymatplotlib.pyplot np.ndarraymatplotlib.image np.ndarray
import numpy as npimport cv2from keras.preprocessing.image import ImageDataGenerator, array_to_img, img_to_array, load_imgfrom PIL import Imageimport skimage.io as ioimport matplotlib.pyplot as pltimport matplotlib.image as mpig ’’’方式: 返回類型OpenCV np.ndarrayPIL PIL.JpegImagePlugin.JpegImageFilekeras.preprocessing.image PIL.JpegImagePlugin.JpegImageFileSkimage.io np.ndarraymatplotlib.pyplot np.ndarraymatplotlib.image np.ndarray’’’ imagePath='E:/DataSet/test1/trainSet/bus/300.jpg' ’’’方式一:使用OpenCV’’’img1=cv2.imread(imagePath)print('img1:',img1.shape)print('img1:',type(img1))print('-'*10) ’’’方式二:使用PIL’’’img2=Image.open(imagePath)print('img2:',img2)print('img2:',type(img2))#轉(zhuǎn)換成np.ndarray格式img2=np.array(img2)print('img2:',img2.shape)print('img2:',type(img2))print('-'*10) ’’’方式三:使用keras.preprocessing.image’’’img3=load_img(imagePath)print('img3:',img3)print('img3:',type(img3))#轉(zhuǎn)換成np.ndarray格式,使用np.array(),或者使用keras里的img_to_array()#使用np.array()#img3=np.array(img2)#使用keras里的img_to_array()img3=img_to_array(img3)print('img3:',img3.shape)print('img3:',type(img3))print('-'*10) ’’’方式四:使用Skimage.io’’’img4=io.imread(imagePath)print('img4:',img4.shape)print('img4:',type(img4))print('-'*10) ’’’方式五:使用matplotlib.pyplot’’’img5=plt.imread(imagePath)print('img5:',img5.shape)print('img5:',type(img5))print('-'*10) ’’’方式六:使用matplotlib.image’’’img6=mpig.imread(imagePath)print('img6:',img6.shape)print('img6:',type(img6))print('-'*10)
運行結(jié)果:
Using TensorFlow backend.img1: (256, 384, 3)img1: <class ’numpy.ndarray’>----------img2: <PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=384x256 at 0x249608A8C50>img2: <class ’PIL.JpegImagePlugin.JpegImageFile’>img2: (256, 384, 3)img2: <class ’numpy.ndarray’>----------img3: <PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=384x256 at 0x2496B5A23C8>img3: <class ’PIL.JpegImagePlugin.JpegImageFile’>img3: (256, 384, 3)img3: <class ’numpy.ndarray’>----------img4: (256, 384, 3)img4: <class ’numpy.ndarray’>----------img5: (256, 384, 3)img5: <class ’numpy.ndarray’>----------img6: (256, 384, 3)img6: <class ’numpy.ndarray’>----------
以上這篇Python OpenCV中的numpy與圖像類型轉(zhuǎn)換操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
