1. 影像的讀取(cv2.imread)
函式 cv2.imread() 用于從指定的檔案讀取影像,
函式說明:
retval = cv.imread(filename[, flags])
- 函式 cv2.imread() 從指定檔案加載影像并回傳該影像的矩陣,
- 如果無法讀取影像(檔案丟失,權限不正確,格式不支持或無效),該函式回傳一個空矩陣,
- 目前支持的檔案格式:
- Windows 位圖 - * .bmp,* .dib
- JPEG 檔案 - * .jpeg,* .jpg,*.jpe
- JPEG 2000檔案 - * .jp2
- 便攜式網路圖形 - * .png
- WebP - * .webp
- 便攜式影像格式 - * .pbm,* .pgm,* .ppm * .pxm,* .pnm
- TIFF 檔案 - * .tiff,* .tif
引數說明:
- filename:讀取影像的檔案路徑和檔案名
- flags:讀取圖片的方式,可選項
- cv2.IMREAD_COLOR(1):始終將影像轉換為 3 通道BGR彩色影像,默認方式
- cv2.IMREAD_GRAYSCALE(0):始終將影像轉換為單通道灰度影像
- cv2.IMREAD_UNCHANGED(-1):按原樣回傳加載的影像(使用Alpha通道)
- cv2.IMREAD_ANYDEPTH(2):在輸入具有相應深度時回傳16位/ 32位影像,否則將其轉換為8位
- cv2.IMREAD_ANYCOLOR(4):以任何可能的顏色格式讀取影像
- 回傳值 retval:讀取的 OpenCV 影像,nparray 多維陣列
注意事項:
- OpenCV 讀取影像檔案,回傳值是一個nparray 多維陣列,OpenCV 對影像的任何操作,本質上就是對 Numpy 多維陣列的運算,
- OpenCV 中彩色影像使用 BGR 格式,而 PIL、PyQt、matplotlib 等庫使用的是 RGB 格式,
- cv2.imread() 如果無法從指定檔案讀取影像,并不會報錯,而是數回傳一個空矩陣,
- cv2.imread() 指定圖片的存盤路徑和檔案名,在 python3 中不支持中文和空格(但并不會報錯),必須使用中文時,可以使用 cv2.imdecode() 處理,參見擴展例程,
- cv2.imread() 讀取影像時默認忽略透明通道,但可以使用 CV_LOAD_IMAGE_UNCHANGED 引數讀取透明通道,
- 對于彩色影像,可以使用 flags=0 按照讀取為灰度影像,
基本例程:
# 1.1 影像的讀取
imgFile = "../images/imgLena.tif" # 讀取檔案的路徑
img1 = cv2.imread(imgFile, flags=1) # flags=1 讀取彩色影像(BGR)
img2 = cv2.imread(imgFile, flags=0) # flags=0 讀取為灰度影像
擴展例程:
# 1.2 從網路讀取影像
import urllib.request as request
response = request.urlopen("https://profile.csdnimg.cn/8/E/F/0_youcans")
imgUrl = cv2.imdecode(np.array(bytearray(response.read()), dtype=np.uint8), -1)
# 1.3 讀取中文路徑的影像
imgFile = "../images/測驗圖01.png" # 帶有中文的檔案路徑和檔案名
# imread() 不支持中文路徑和檔案名,讀取失敗,但不會報錯!
# img = cv2.imread(imgFile, flags=1)
# 使用 imdecode 可以讀取帶有中文的檔案路徑和檔案名
img = cv2.imdecode(np.fromfile(imgFile, dtype=np.uint8), -1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/350748.html
標籤:其他
下一篇:imutils
