it-swarm-ja.com

cv2で画像を複製するpython

私はopencvを初めて使用しますが、ここで質問があります、cppのcv :: clone()と同じように機能するpython関数は何ですか?

    rectImg = img[10:20, 10:20]

しかし、その上に線を引くと、imgとrectImageの両方に線が表示されるので、どうすればこれを行うことができますか?

36
tintin

_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.
_
45
Abid Rahman K

最初の答えは正しいですが、あなたは本質的にnumpy配列を使用するcv2を使用していると言います。したがって、「myImage」という完全に異なるコピーを作成するには:

newImage = myImage.copy()

上記で十分です。 numpyをインポートする必要はありません。

53
Ash Ketchum

Python標準ライブラリ。次のように元の画像の浅いコピーを作成します。

import copy

original_img = cv2.imread("foo.jpg")
clone_img = copy.copy(original_img)
2
yildirim

私のお気に入りの方法では、cv2.copyMakeBorderをボーダーなしで使用しています。

copy = cv2.copyMakeBorder(original,0,0,0,0,cv2.BORDER_REPLICATE)
1
Jack Guy