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
  • 相关阅读:
    ASP.NET MVC与RAILS3的比较
    ASP.NET状态管理详解,让你明明白白
    Javascript在页面加载时的执行顺序【转】
    ASP.NET登录控件延伸(个性化)
    ASP.NET中读取excel内容并显示
    javascript 最常用的技巧整理
    ASP.NET用户控件事件的定义和实践
    百度 WebUploader 分片上传
    前端 WebUploader 分片上传
    vue WebUploader 分片上传
  • 原文地址:https://www.cnblogs.com/houjun/p/9811843.html
Copyright © 2011-2022 走看看