zoukankan      html  css  js  c++  java
  • 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))
  • 相关阅读:
    python模块:XML
    python常用模块:json&pickle
    python模块:os,sys
    python常用模块:time与random
    文件查询修改功能实现
    Ubuntu--smb配置文件详解
    Ubuntu添加计划任务
    Docker私有仓库registry
    docker + calico网络,实现不同容器之间的相互访问
    Centos7 yum安装nginx
  • 原文地址:https://www.cnblogs.com/zhengbiqing/p/11072959.html
Copyright © 2011-2022 走看看