中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用cv2.imread()讀取BGR圖像

發布時間:2021-03-16 16:36:36 來源:億速云 閱讀:1585 作者:Leah 欄目:開發技術

這篇文章給大家介紹如何使用cv2.imread()讀取BGR圖像,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

opencv讀取圖像為b,g,r方法,比如

img = cv2.imread("xx.jpg")
cv2.imshow("xx",img)

因為plt函數是rgb方式讀取的,所以會出錯。這時我們可以手動改變img的通道順序,如下:

b,g,r = cv2.split(img)
img_rgb = cv2.merge([r,g,b])
plt.figure()
plt.imshow(img_rgb)
plt.show()

這時img_rgb就是rgb順序的了.那么這時再用cv2.imshow()顯示出來,rgb錯誤:

如何使用cv2.imread()讀取BGR圖像

補充:盤點踩過的關于cv2 和PIL 圖像讀取的一些小坑

1、首先像素讀取順序不同

PIL 讀取圖像時的像素順序是標準的RGB

from PIL import Image
img = Image.open("test.jpg")
print img.size
print img.getpixel((0,0))

輸出結果是

(533, 800)
(217, 229, 225)

cv2 讀取圖像時的像素順序是標準的BGR

img = cv2.imread(""test.jpg"")
print img.shape
print img[0][0]

輸出結果是

(800, 533, 3)
[225 229 217]

若要cv2讀取完圖像也是RGB格式,則按如下方法

img = cv2.imread(""test.jpg"")[..., ::-1]
print img.shape
print img[0][0]

輸出結果是

(800, 533, 3)
[217 229 225]

和用PIL 讀取完的一致

2、cv2 圖像讀取方法的參數解釋

首先我們先來看一下這個函數的定義

def imread(filename, flags=None)

filename

參數傳入的是圖像路徑,支持解析的圖像格式基本上覆蓋全了

- Windows bitmaps - \*.bmp, \*.dib (always supported)
- JPEG files - \*.jpeg, \*.jpg, \*.jpe (see the *Note* section)
- JPEG 2000 files - \*.jp2 (see the *Note* section)
- Portable Network Graphics - \*.png (see the *Note* section)
- WebP - \*.webp (see the *Note* section)
- Portable image format - \*.pbm, \*.pgm, \*.ppm \*.pxm, \*.pnm (always supported)
- Sun rasters - \*.sr, \*.ras (always supported)
- TIFF files - \*.tiff, \*.tif (see the *Note* section)
- OpenEXR Image files - \*.exr (see the *Note* section)
- Radiance HDR - \*.hdr, \*.pic (always supported)
- Raster and Vector geospatial data supported by GDAL (see the *Note* section)

flags

@param flags Flag that can take values of cv::ImreadModes

Flags指定了所讀取圖片的顏色類型, 默認值為1

對應值為 -1 到 4

參數Value
IMREAD_UNCHANGEDIf set, return the loaded image as is (with alpha channel, otherwise it gets cropped).
IMREAD_GRAYSCALEIf set, always convert image to the single channel grayscale image.
IMREAD_COLORIf set, always convert image to the 3 channel BGR color image.
IMREAD_ANYDEPTHIf set, return 16-bit/32-bit image when the input has the corresponding depth, otherwise convert it to 8-bit.
IMREAD_ANYCOLORIf set, the image is read in any possible color format.
IMREAD_LOAD_GDALIf set, use the gdal driver for loading the image.
參數Value
flag=-1時8位深度,原通道
flag=08位深度,1通道
flag=18位深度 ,3通道
flag=2原深度,1通道
flag=3原深度,3通道
flag=48位深度 ,3通道

IMREAD_UNCHANGED :不進行轉化,比如保存為了16位的圖片,讀取出來仍然為16位。

IMREAD_GRAYSCALE :進行轉化為灰度圖,比如保存為了16位的圖片,讀取出來為8位,類型為CV_8UC1。

IMREAD_COLOR :進行轉化為三通道圖像。

IMREAD_ANYDEPTH :如果圖像深度為16位則讀出為16位,32位則讀出為32位,其余的轉化為8位。

IMREAD_ANYCOLOR

IMREAD_LOAD_GDAL :使用GDAL驅動讀取文件,GDAL(Geospatial Data Abstraction Library)是一個在X/MIT許可協議下的開源柵格空間數據轉換庫。它利用抽象數據模型來表達所支持的各種文件格式。它還有一系列命令行工具來進行數據轉換和處理。

關于如何使用cv2.imread()讀取BGR圖像就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

博兴县| 乐安县| 通山县| 河池市| 昌都县| 昆明市| 罗江县| 扎赉特旗| 房产| 上蔡县| 故城县| 广安市| 东港市| 台江县| 洛川县| 五大连池市| 儋州市| 林芝县| 平凉市| 睢宁县| 江都市| 广饶县| 焦作市| 华容县| 临海市| 闵行区| 文水县| 昭苏县| 达孜县| 永兴县| 新河县| 井陉县| 仁怀市| 明溪县| 长子县| 镇安县| 金华市| 平利县| 兴国县| 临泽县| 宁武县|