zoukankan      html  css  js  c++  java
  • pycaffe做识别时通道转换问题

    转自---------------------  
    作者:Peanut_范  
    来源:CSDN  
    原文:https://blog.csdn.net/u013841196/article/details/72799680  
    版权声明:本文为博主原创文章,转载请附上博文链接!

    使用python对Caffe框架训练好的模型进行识别时发现通道转换的若干问题:
    要注意一点的就是:Caffe中彩色图像的通道是BGR格式,图像存储是【0,255】

    1.caffe.io.load_image方式

    image = caffe.io.load_image(image_file) #加载图片

    使用caffe.io.load_image()读进来的是RGB格式和0~1(float)

    所以在进行识别之前要在transformer中设置transformer.set_raw_scale('data',255)(缩放至0~255)

    以及transformer.set_channel_swap('data',(2,1,0)(将RGB变换到BGR)

    # python中将图片存储为[0, 1],而caffe中将图片存储为[0, 255],所以需要一个转换
     

    transformer.set_raw_scale('data', 255)      # 缩放到[0,255]之间
    transformer.set_channel_swap('data', (2,1,0))   #交换通道,将图片由RGB变为BGR(caffe中图片是BGR格式,而原始格式是RGB,所以要转化)

    2.使用cv2.imread()来读取图片

    cv2.imread()接口读图像,读进来直接是BGR 格式and 0~255

    所以不需要再缩放到【0,255】和通道变换【2,1,0】,不需要transformer.set_raw_scale('data',255)和transformer.set_channel_swap('data',(2,1,0))

    3.使用PIL来读取图片

    对于彩色图像,不管其图像格式是PNG,还是BMP,或者JPG,在PIL中,使用Image模块的open()函数打开后,返回的图像对象的模式都是“RGB”。而对于灰度图像,不管其图像格式是PNG,还是BMP,或者JPG,打开后,其模式为“L”。所以需要转换格式,但不需要缩放到[0,255]

    data = np.array(Image.open(self.dataRoot+img_list))
    data = np.transpose(data,(2,0,1))#转换通道
    data[[0,2],...] = data[[2,0],...] #RGB→BGR
  • 相关阅读:
    HDU5730 Shell Necklace
    BZOJ4883 [Lydsy2017年5月月赛]棋盘上的守卫
    Spring boot 配置文件
    org.joda.time.DateTime 日期操作
    Elasticsearch + Springboot 启动报错 java.net.ConnectException: Connection refused
    centos7 在docker下安装es Elasticsearch
    centos 7 。 docker 安装rabbitmq 以及集权搭建
    linux 安装mysql5.7.25
    安装rabbtimq CentOS 7
    docker + spring boot 打包 部署。
  • 原文地址:https://www.cnblogs.com/houjun/p/9811843.html
Copyright © 2011-2022 走看看