caffe 测试 输入图像格式

目录

原理:

cv2 与 caffe.io.load_image()之间的转换:

caffe的输入要求

案例

opencv版本的:

caffe.io.load_img()


 

原理:

https://blog.****.net/lovelyaiq/article/details/70254583

https://codertw.com/%e7%a8%8b%e5%bc%8f%e8%aa%9e%e8%a8%80/584531/

cv2 与 caffe.io.load_image()之间的转换:

使用opencv和caffe的伙伴们,可能会有一个疑问,那就是对于同时读取图片的cv2.imread()和caffe.io.loadimage两个函数,有什么差别?

1、cv2.imread()接口读图像,读进来直接是BGR 格式数据格式在 0~255,通道格式为(H,W,C),即行,列、通道数(Row, Col, C)。

2、caffe.io.load_image()读进来是RGB格式和 0~1(float)

     因此,cv2.imread()读取的数据,需要进过转换后,才和caffe.io.load_image()相同,例如:
image = caffe.io.load_image(caffe_root + 'examples/images/cat.jpg')

image1=cv2.imread(caffe_root + 'examples/images/cat.jpg')
image1=cv2.cvtColor(image1,cv2.COLOR_BGR2RGB)
image1=image1/255.
    经过转换后,cv2.imread读取的image1和caffe.io.load_image()读取到的image格式相同。
    所以在进行特征提取之前要在transformer中设置transformer.set_raw_scale('data',255)(缩放至0~255)
以及transformer.set_channel_swap('data',(2,1,0)(将RGB变换到BGR)。
     调用caffe model进行特征提取分类时,要注意区分image用何种方法读进来。

caffe的输入要求

如果用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)

###################分割线##########################

若是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)

完毕!

案例

opencv版本的:

caffe 测试 输入图像格式

caffe 测试 输入图像格式

caffe 测试 输入图像格式

caffe.io.load_img()

caffe 测试 输入图像格式

caffe 测试 输入图像格式

caffe 测试 输入图像格式

[完毕]