2016-09-23 17 views
0

私はpython 2.7とopencvを使用しています。Python/OpenCV:cv2.resize()を使用するとエラーが発生します

私が使用しようとしている:hereから取ら

cv2.resize(src, dst, Size(), 0.5, 0.5, interpolation=cv2.INTER_LINEAR); 

。しかし、このコードを実行すると、私は得るNameError: global name 'Size' is not defined.

私を助けてくれますか?

+0

'Size'に引数を渡す必要があります:' cv2.resize(src、dst、Size(100,100)、0.5、0.5、補間= cv2.INTER_LINEAR); '例えば – EdChum

+0

@EdChum '' fxとfyを指定して、関数が目的のイメージサイズを計算させるようにしてください。 ' – zinon

+0

はい、私はこれをpythonのシグネチャを使用する必要があることに気付きました: 'cv2.resize(src、dsize [、dst [、fx [ 、fy [補間]]]])→dst'以下のZdarの答えをご覧ください – EdChum

答えて

4

おそらく、resizeのC++ APIがあります。

dst = cv2.resize(src, dsize, fx = 0.5, fy=0.5, interpolation = cv2.INTER_LINEAR) 
:あなたは追加のパラメータを渡す場合

src - Original image 
dsize - a tuple defining the final size of the image. 

は、あなたのようにAPIの名前付きパラメータを使用することができ

dst = cv2.resize(src, dsize) 

PythonのAPIは次のようになります

dsizeは必須ですが、依然としてresize mあなたのためにdsizeを計算するには、Noneというパラメータを渡すことができます。

dst = cv2.resize(src, None, fx = 0.5, fy=0.5) 
+0

ありがとう!それでおしまい!この問題は、 'Size()'に 'None'を使わなかったために起こりました。 – zinon

0

前の答えはOKでしたが、私は、ストレージを再利用したかった - 既存のストレージresized(両方の3次元uint8 numpyのアレイ)に収まるようにimageのサイズを変更するために、私は

ret = cv2.resize(image, dsize=resized.shape[:2][::-1], dst=resized) 
を使用するために必要な

dsize引数が後方にあることに注意してください - それは(行、列)ではなく、(幅、高さ)であり、従って[::-1]です。

実際に(ret == resized).all()を確認するために、retが返されます。

関連する問題