因為同實驗室的研究內容與影像處理有關
一起討論的同時也寫了一些程式
紀錄一下使用OpenCV讀入影像的過程

安裝OpenCV

一開始需要安裝openCV的套件
進入CMD輸入

1
pip install opencv-python

讀入圖片

1
2
3
4
5
6
7
8
9
import numpy as np  #載入需要的函式庫
import cv2 #載入OpenCV

img = cv2.imread('test.jpg') #讀入圖片
print(type(img)) #顯示img在opencv中儲存的格式
print(img.shape) #顯示該numpy的陣列大小(長,寬,圖片的chnnel)
cv2.imshow('My Image', img) # 顯示圖片
cv2.waitKey(0) # 顯示圖片後不要有任何動作,等待按下鍵盤上的任一鍵
cv2.destroyWindow('My Image') # 關閉 'My Image' 視窗

接著就可以看到我們讀取出來的圖片了

該圖片的type為
圖片讀入numpy後的陣列大小為(512, 512, 3)

讀入灰階

如果想要讀入灰階的圖片該怎麼做呢?
以下為讀入時可以參考的參數

  1. CV_LOAD_IMAGE_UNCHANGED (<0),讀取原始image
  2. CV_LOAD_IMAGE_GRAYSCALE ( 0),讀取灰階image
  3. CV_LOAD_IMAGE_COLOR (>0),讀取RGB image
1
2
3
4
img_gray = cv2.imread('test.jpg', 0)
cv2.imshow('My Image', img_gray)
cv2.waitKey(0)
cv2.destroyWindow('My Image')

控制視窗

  1. 讓視窗可以自由縮放大小

    1
    cv2.namedWindow('My Image', cv2.WINDOW_NORMAL)
  2. 關閉 ‘My Image’ 視窗

    1
    cv2.destroyWindow('My Image')
  3. 按下任意鍵則關閉所有視窗

    1
    2
    cv2.waitKey(0)
    cv2.destroyAllWindows()

寫入圖檔

可以將彩色的圖檔以灰階格式讀入後輸出

1
cv2.imwrite('output.jpg', img)

也可以寫入不同圖檔格式

1
2
cv2.imwrite('output.png', img)
cv2.imwrite('output.tiff', img)

設定 JPEG 圖片品質為 90(可用值為 0 ~ 100)

1
cv2.imwrite('output.jpg', img, [cv2.IMWRITE_JPEG_QUALITY, 90])

設定 PNG 壓縮層級為 5(可用值為 0 ~ 9)

1
cv2.imwrite('output.png', img, [cv2.IMWRITE_PNG_COMPRESSION, 5])