Keras訓練加載圖片方式:PIL(RGB) vs OpenCV(BGR)


 版權聲明:本文為博主原創文章,歡迎轉載,並請注明出處。聯系方式:460356155@qq.com

Keras在生成訓練和驗證數據時,有2種方式:從內存加載、從硬盤加載,即ImageDataGenerator的flow和flow_from_directory函數。

 

其中flow_from_directory方式,Keras通過PIL讀取圖像文件,讀到的數據是RGB順序的。

而flow方式,由用戶讀取圖像文件,加載到內存,如果此時用戶用OpenCV的方式讀取文件,則數據是BGR順序的。

 

因此,需注意圖像數據格式的一致性。

如果訓練通過flow_from_directory讀取,判斷圖片時通過OpenCV讀取,則會出現紊亂,結果會差別較大。

 

在訓練和圖片識別采用的包不同導致圖像數據格式不一致時,要做RGB、BGR順序的轉換:

1、統一用BGR順序:在ImageDataGenerator中傳入preprocessing_function,把RGB的轉換為BGR

def img_rgb2bgr(img):
    return img[: , : , : : -1]

2、統一用RGB順序:在OpenCV讀取圖像文件時,把BGR的轉換為RGB

import cv2
from PIL import Image

img = cv2.imread("plane.jpg")
image = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM