Клонировать изображение в cv2 python
Я новичок в opencv, вот вопрос, что такое функция python, которая действует так же, как cv:: clone() в cpp?
Я просто пытаюсь получить прямоугольник
rectImg = img[10:20, 10:20]
но когда я рисую на нем строку, я обнаруживаю, что строка отображается как на img, так и на rectImage, поэтому, как я могу это сделать?
Ответы
Ответ 1
Если вы используете cv2
, правильный метод заключается в использовании метода .copy()
в Numpy. Он создаст копию требуемого массива. В противном случае он будет производить только представление об этом объекте.
например:
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.
Ответ 2
Первый ответ правильный, но вы говорите, что используете cv2, который по своей сути использует массивы numpy. Итак, чтобы сделать совершенно другую копию, скажем, "myImage":
newImage = myImage.copy()
Вышесказанное достаточно. Нет необходимости импортировать numpy.
Ответ 3
Вы можете просто использовать стандартную библиотеку Python. Сделайте мелкую копию исходного изображения следующим образом:
import copy
original_img = cv2.imread("foo.jpg")
clone_img = copy.copy(original_img)
Ответ 4
Мой любимый метод использует cv2.copyMakeBorder без рамки, например.
copy = cv2.copyMakeBorder(original,0,0,0,0,cv2.BORDER_REPLICATE)