11

我的行为我不太明白:

In [1]: import cv2

In [2]: pylab_img=pylab.imread('lena.jpg')

In [3]: cv_img=cv2.imread('lena.jpg')

In [4]: pylab_img[200,200,:]
Out[4]: array([228, 197, 176], dtype=uint8)

In [5]: cv_img[200,200,:]
Out[5]: array([ 84,  48, 132], dtype=uint8)

两个版本都imread将相同的图像读入相同数据类型的 numpy 数组,但值不匹配。如果这些值只是混淆了,我可以将其归结为 opencv 使用 BGR 而 matplotlib (pylab) 使用 RGB 的事实,但这似乎并不能解释这种差异。

有什么想法吗?

4

1 回答 1

12

它们不匹配有几个原因:

  1. matplotlib 将颜色值读取为 RGB,而 OpenCV 使用 BGR
  2. matplotlib 数组中的行似乎列出了从图像底部到顶部的像素行(不要问我为什么),而 OpenCV 从上到下

也许有更好的方法来做到这一点,但如果你想匹配它们,你会发现:

pylab_img[::-1,:,::-1] == cv_img
于 2013-07-19T03:43:25.630 回答