簡體   English   中英

matplotlib.image和cv2.imread之間的區別

[英]Difference between matplotlib.image and cv2.imread

當我使用matplotlib.image讀取灰度圖像時,它顯示尺寸(512,512)和類型(float32),但是當我對同一圖像使用cv2.imread時,它顯示(512,512,3)並鍵入uint8。 為什么會這樣呢? cv2.imread命令是否由於默認標志而自動將圖像轉換為BGR格式。 (我正在使用python 3和opencv2。)以下是代碼:

import cv2
import matplotlib.image as mpimage
img = cv2.imread('image_1.png')
img1=mpimage.imread('image_1.png')

是的,默認情況下它將讀取BGR,如果您想讀取灰度圖像,則需要在imread中使用第二個參數。 文檔

讀取圖像

使用函數cv2.imread()讀取圖像。 該映像應位於工作目錄中,或者應提供完整的映像路徑。

第二個參數是一個標志,用於指定應讀取圖像的方式。

  1. cv2.IMREAD_COLOR:加載彩色圖像。 圖像的任何透明度都將被忽略。 這是默認標志。
  2. cv2.IMREAD_GRAYSCALE:以灰度模式加載圖像
  3. cv2.IMREAD_UNCHANGED:加載包括alpha通道在內的圖像注意除了這三個標志,您可以分別簡單地傳遞整數1、0或-1。

請參見下面的代碼:

 import numpy as np import cv2 #Load an color image in grayscale img = cv2.imread('messi5.jpg',0) 

因此,如果您希望默認情況下讀取灰度圖像,則需要將第二個參數的imread值讀為1,而不是0。對您的以下代碼進行的細微更改應在兩種情況下都以相同的圖像格式讀取

import cv2
import matplotlib.image as mpimage
img = cv2.imread('image_1.png', 1)
img1=mpimage.imread('image_1.png')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM