opencv,numpy,matplotlib上对图片操作的细微

2019-02-28  本文已影响0人  提着木剑走天下

一张彩色图片用 opencvmatplotlib 读取时,其中RGB的三色通道顺序是不同的,其中 opencv 的是bgr,而 matplotlib 的是rgb,这里面的转换是可以是,

    rgb = bgr[:,:,::-1]

关于图片的大小改变,即 opencvnumpy ,这里面 opencvresizenumpyreshape

img = cv2.resize(img, (image_width ,image_height),interpolation=cv2.INTER_CUBIC)
img = np.reshape(img, [image_height, image_width, image_channel])

可以看出,opencv.resize 是默认的先 fx 轴,后 fy 轴,也就是先宽后高,但是numpy.reshape,是指矩阵中的(行,列),对应图片就是(高,宽)。
值得注意的是,这里的 reshape 并不能像 resize 中的那样可以进行图片的缩放,如果需要处理推荐直接使用 opencv 中的 resize,只要把想处理的数据处理成图片的格式形状就行,例如,要处理 A[c,w,h] 的格式数据,可以先用

 np.transpose(A, (2,0,1))

变成 A'[w,h,c] ,然后在 opencvresize,这样可以很好的保留原始数据的特性。

上一篇 下一篇

猜你喜欢

热点阅读