天天看點

python + opencv 第2節 讀取,顯示,儲存一張圖檔

# 本節學習 opencv怎麼讀入,顯示和儲存一張圖檔
# 對應三個函數
# 1. cv.imread(路徑, 讀取方式)
# 讀取方式有三個選項
# a. cv2.IMREAD_COLOR : 讀入一副彩色圖像。圖像透明度會被忽略,這是預設參數
# b. cv2.IMREAD_GRAYSCALE : 以灰階模式讀入圖像
# c. cv2.IMREAD_UNCHANGED : 讀入一幅圖像,并且包括圖像的alpha通道
# 傳回值 : 圖像讀取成功,傳回一個三維的ndarray數組,如果圖檔不存在,不會報錯,但是print(img)是 None
import cv2
img = cv2.imread('lenna.png', cv2.IMREAD_COLOR)
print(type(img)) # <class 'numpy.ndarray'>
print(img)
print(img.shape) #輸出 (512, 512, 3) 對應圖像的 高度,寬度,和通道(RGB)


# 2. cv.imshow(視窗名稱, 顯示的圖像)
# 顯示圖檔方式1,用cv2.imshow()建立視窗
cv2.imshow('lenna', img)
k = cv2.waitKey(0)
if k == 27:
    cv2.destroyWindow('lenna')

# 顯示圖檔方式2,先建立視窗,再将圖檔加載到該視窗
# cv2.namedWindow('lenna', cv2.WINDOW_NORMAL) #圖像随視窗一起放大縮小
# cv2.imshow('lenna', img)
# k = cv2.waitKey(0)
# if k == 27:
#     cv2.destroyAllWindows()


# 3. cv.imwrite(filename, img, num)
# CV_EXPORTS_W bool imwrite( const String& filename, InputArray img,
#               const std::vector<int>& params = std::vector<int>());
# 參數1 filename : 要儲存的檔案名
# 參數2 img : 要儲存的圖像,或者說 Mat類型的圖像資料
# 參數3 num : 特定格式儲存的參數編碼 預設值 std::vector<int>(), 可不寫

cv2.imwrite('lenna_copy.png', img)