Подтвердить что ты не робот

Клонировать изображение в cv2 python

Я новичок в opencv, вот вопрос, что такое функция python, которая действует так же, как cv:: clone() в cpp? Я просто пытаюсь получить прямоугольник

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

но когда я рисую на нем строку, я обнаруживаю, что строка отображается как на img, так и на rectImage, поэтому, как я могу это сделать?

4b9b3361

Ответ 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)