it-swarm.com.de

Klonen Sie ein Bild in cv2 python

Ich bin neu in opencv, hier ist eine Frage, was ist die python Funktion, die dasselbe wie cv :: clone () in cpp macht? Ich versuche nur, eine Korrektur durch zu bekommen

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

aber wenn ich eine Linie darauf zeichne, sehe ich, dass die Linie sowohl auf img als auch auf rectImage erscheint. Wie kann ich das tun?

36
tintin

Wenn Sie cv2 Verwenden, ist die Verwendung der .copy() -Methode in Numpy die richtige Methode. Es wird eine Kopie des Arrays erstellt, das Sie benötigen. Andernfalls wird nur eine Ansicht dieses Objekts erstellt.

z.B:

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

Die erste Antwort ist richtig, aber Sie sagen, dass Sie cv2 verwenden, das von Natur aus numpy-Arrays verwendet. Um also eine komplett andere Kopie von "myImage" zu erstellen, gehen Sie wie folgt vor:

newImage = myImage.copy()

Das oben Genannte ist genug. Keine Notwendigkeit, numpy zu importieren.

53
Ash Ketchum

Sie können einfach die Standardbibliothek Python) verwenden. Erstellen Sie eine flache Kopie des Originalbilds wie folgt:

import copy

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