私はopencvを使い慣れています。ここでは質問ですが、cppでcv :: clone()と同じように動作するpython関数は何ですか? 私はちょうどcv2 pythonでイメージを複製
rectImg = img[10:20, 10:20]
で矩形を取得しようが、私はその上に線を引くとき、私はラインがIMGとrectImageの両方に表示され見つけるので、どのように私はこれを成し遂げることができますか?
私はopencvを使い慣れています。ここでは質問ですが、cppでcv :: clone()と同じように動作するpython関数は何ですか? 私はちょうどcv2 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.
あなたは、単に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)
最初の答えは正しいですが、本質的にnumpy配列を使用するcv2を使用しているとします。ですから、「myImage」という完全な別のコピーを作成するには:
newImage = myImage.copy()
これで十分です。 numpyをインポートする必要はありません。
これらのマジックナンバーはどういう意味ですか? – raaj
0-100の範囲の数字です。各ステップの後に 'x'と' y'を表示するだけです。それからあなたはそのアイデアを得るでしょう。 –