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
  • 相关阅读:
    《人月神话》阅读笔记02
    学习进度条-4
    课堂作业3
    MySql 8.0及对应驱动包匹配注意点
    关于Ubuntu中Could not get lock /var/lib/dpkg/lock解决方案
    STM32之ADC配置,ADC_Mode模式理解
    STM32串口中断的方式发送
    RTC 与RCC 之间的关系
    stm32 MDK5软件仿真之查看io口输出
    STM32 PWM学习
  • 原文地址:https://www.cnblogs.com/houjun/p/9811843.html
Copyright © 2011-2022 走看看