Opencv-Python:圖像尺寸、圖像的讀取、顯示、保存與復制
在使用opencv的方法時,首先必須導入opencv包。新的opencv導入cv2,這里也和cv做了一個對比
?
- import?cv2??
?
一、圖像尺寸
圖像的大小可以通過其shape屬性來獲取,shape返回的是一個tuple元組,第一個元素表示圖像的高度,第二個表示圖像的寬度,第三個表示像素的通道數。
示例:
?
- if?__name__?==?'__main__':??
- ????dirfile?=?'dataset/data/TrainData/001.bmp'??
- ????img?=?cv2.imread(dirfile)??
- ????size?=?img.shape??
- ????print?size??
?
在cv中,是通過size = cv2.GetSize(i)的GetSize()函數來獲取的
?
二、讀取圖像
在python中不需要聲明變量,知道圖像的具體位置就可以通過imread()直接讀取;目前opencv支持讀取bmp、jpg、png等常用的一些格式,更詳細的內容請參考opencv的參考文檔。讀取:
?
- image?=?cv2.imread('F:/001.nmp')??
?
cv對應的方法是grey_image = cv2.CreateImage(size, 8, 1)
?
三、顯示圖像首先創建一個新的窗口用于顯示圖像:
- cv2.namedWindow('showimage')??
?
然后在窗口中顯示圖像:
?
- cv2.imshow("Image",i)??
- cv2.waitKey(0)??
?
cv中cv.ShowImage("Image",i)顯示圖像,cv.WaitKey()
?
四、保存圖像
?
- cv2.imwrite(F:/images',image,[int(cv2.IMWRITE_JPEG_QUALITY),5])三個參數分別對應保存的路徑及文件名、圖像矩陣、指定格式(對于JPEG,其表示的是圖像的質量,??
- 用0-100的整數表示,默認為95。?注意,cv2.IMWRITE_JPEG_QUALITY類型為Long,必須轉換成int;對于PNG,第三個參數表示的是壓縮級別。cv2.IMWRITE_PNG_COMPRESSION,??
- 從0到9,壓縮級別越高,圖像尺寸越小。這個是可選參數)??
五、復制圖像 圖像使用numpy數組的屬性來表示圖像的尺寸和提通道信息。 也可以用cvtColor獲取原圖像的副本:
在原來的opencv中可以直接使用cv.CreateImage()創建圖像,但cv2就需要使用numpy的函數了
?
- import?numpy?as?np??
- image?=?np.zeros(img.shape,?np.uint8)??
?
當然也可以直接復制原來的圖像到一張新的圖像上:
?
- image?=?img.copy()??
?
?
- image?=?cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)??