2013-07-19 13 views
6

alıyorum davranışını değerleri: imread aitimread: tamamen farklı diziyi dönen Oldukça anlamıyorum

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) 

iki sürüm aynı veri türü bir numpy diziye aynı görüntüyü okumak, henüz değerler eşleşmiyor. Eğer değerler daha karışıktıysa, opencv'nin BGR'yi kullanırken matplotlib'in (pylab) RGB'yi kullandığı gerçeğine, ama bu çelişkiyi hesaba katmıyor gibi görünebilir.

Herhangi bir düşünce?

+1

Cv2'nin "imread" sonucunu almak ve pylab'ın "imshow" ile görüntülemek, sonra pylab'ın 'imread' sonucunu almak ve cv2'nin imshow'unu görüntülemek için bilgilendirici olabilir. – bogatron

+0

SOmewhat ile ilgili: http://stackoverflow.com/questions/1349230/matplotlib-coord-sys-origin-to-top-left – Bull

cevap

9

Onlar birkaç nedenden dolayı eşleşmiyor: OpenCV BGR kullanır oysa

  1. matplotlib Matplotlib en dizide
  2. satır görüntünün altından piksel satırları listelemek için görünür RGB renk değerlerini okur Üste OpenCV alt

yukarıdan gider oysa Belki bunu yapmanın güzel bir yolu yoktur, (neden bana sormayın), ancak bunları eşleştirmek istedik, sen bulacağını:

pylab_img[::-1,:,::-1] == cv_img