Je suis nouveau à l'opencv, voici une question, quelle est la fonction python qui agit de la même manière que cv :: clone () dans cpp? J'essaie juste d'obtenir un rect par
rectImg = img[10:20, 10:20]
mais quand je trace une ligne dessus, je trouve la ligne apparaissant à la fois sur img et sur rectImage, alors comment puis-je le faire?
Si vous utilisez cv2
, La méthode correcte consiste à utiliser la méthode .copy()
dans Numpy. Cela créera une copie du tableau dont vous avez besoin. Sinon, il ne produira qu'une vue de cet objet.
par exemple:
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.
La première réponse est correcte mais vous dites que vous utilisez cv2 qui utilise de manière inhérente des tableaux numpy. Donc, pour faire une copie complète complète de dis "myImage":
newImage = myImage.copy()
Ce qui précède suffit. Pas besoin d'importer numpy.
Vous pouvez simplement utiliser Python. Faites une copie superficielle de l’image originale comme suit:
import copy
original_img = cv2.imread("foo.jpg")
clone_img = copy.copy(original_img)
Ma méthode préférée utilise cv2.copyMakeBorder sans bordure, comme ça.
copy = cv2.copyMakeBorder(original,0,0,0,0,cv2.BORDER_REPLICATE)