私はopencvが初めてです。ここに質問があります.cppのcv::clone()と同じように動作するpython関数は何ですか? 私は直角を取得しようとします
rectImg = img[10:20, 10:20]
しかし、線を引くと、線が img と rectImage の両方に表示されるので、どうすればこれを行うことができますか?
最初の答えは正しいですが、本質的にnumpy配列を使用するcv2を使用していると言います。したがって、たとえば「myImage」の完全に異なるコピーを作成するには:
newImage = myImage.copy()
上記で十分です。numpy をインポートする必要はありません。
を使用する場合cv2
、正しい方法は.copy()
Numpy でメソッドを使用することです。必要な配列のコピーが作成されます。それ以外の場合は、そのオブジェクトのビューのみが生成されます。
例えば:
In [1]: import numpy as np
In [2]: x = np.arange(10*10).reshape((10,10))
In [4]: y = x[3:7,3:7].copy()
In [6]: y[2,2] = 1000
In [8]: 1000 in x
Out[8]: False # see, 1000 in y doesn't change values in x, parent array.
私のお気に入りの方法は、境界線なしで cv2.copyMakeBorder を使用します。
copy = cv2.copyMakeBorder(original,0,0,0,0,cv2.BORDER_REPLICATE)
Python 標準ライブラリをそのまま使用できます。次のように、元のイメージのシャロー コピーを作成します。
import copy
original_img = cv2.imread("foo.jpg")
clone_img = copy.copy(original_img)