天天看點

cv2.imread()和caffe.io.loadimage的差別

    使用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用何種方法讀進來。

繼續閱讀