2014-01-21 122 views
4

我試圖縮小使用Python OpenCV的綁定(CV2,新的綁定)的圖像:OpenCV Image調整大小翻轉尺寸?

ret, frame = cap.read() 
print frame.shape 
# prints (720, 1280, 3) 
smallsize = (146,260) 

smallframe = cv2.resize(frame, smallsize) 
print smallframe.shape 
# prints (260, 146, 3) 

正如你可以看到,尺寸不知何故最終被翻轉的按比例縮小圖像。而不是返回尺寸(寬x高)146x260的圖像,我得到260x146

什麼給?

+0

另外,當我將'smallsize'設置爲(260,146)時,一切正常。 – adewinter

回答

5

很久以前回答了這個問題,但從未接受。讓我再解釋一下其他任何被這個困惑的人。問題是在python中,OpenCV使用numpy。 Numpy數組形狀,函數等假定(高度,寬度),而OpenCV函數,方法等使用(寬度,高度)。你只需要注意。

總結:

  • cv2.anything() - >使用(width, height)
  • image.anything() - >使用(height, width)
  • numpy.anything() - >使用(height, width)
+0

完美,謝謝你的解釋。這現在更有意義了。任何想法爲什麼numpy沒有與寬度x高度約定?這似乎是幾乎無處不在的標準... – adewinter

+0

@adewinter嗯,這是一個驚喜,它幫助。至於row-numpy的原因,我相信這是因爲矩陣通常使用這種符號,而numpy通常用於數學,而不僅僅是圖像。然而,由於OpenCV非常關注圖像,因此它使用x(列) - 主要符號。 – KobeJohn

相關問題