私はopencvを初めて使用しますが、ここで質問があります、cppのcv :: clone()と同じように機能するpython関数は何ですか?
rectImg = img[10:20, 10:20]
しかし、その上に線を引くと、imgとrectImageの両方に線が表示されるので、どうすればこれを行うことができますか?
_cv2
_を使用する場合、正しい方法はNumpyで.copy()
メソッドを使用することです。必要なアレイのコピーが作成されます。それ以外の場合は、そのオブジェクトのビューのみが生成されます。
例えば:
_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.
_
最初の答えは正しいですが、あなたは本質的にnumpy配列を使用するcv2を使用していると言います。したがって、「myImage」という完全に異なるコピーを作成するには:
newImage = myImage.copy()
上記で十分です。 numpyをインポートする必要はありません。
Python標準ライブラリ。次のように元の画像の浅いコピーを作成します。
import copy
original_img = cv2.imread("foo.jpg")
clone_img = copy.copy(original_img)
私のお気に入りの方法では、cv2.copyMakeBorderをボーダーなしで使用しています。
copy = cv2.copyMakeBorder(original,0,0,0,0,cv2.BORDER_REPLICATE)