我是新來的opencv,這裏是一個問題,什麼是cv中的cv :: clone()相同的python函數? 我只是試圖通過在cv2中克隆圖像python
rectImg = img[10:20, 10:20]
得到一個矩形,但是當我畫上一條線,我發現了線都出現在IMG和rectImage,所以,我怎麼能得到這個工作?
我是新來的opencv,這裏是一個問題,什麼是cv中的cv :: clone()相同的python函數? 我只是試圖通過在cv2中克隆圖像python
rectImg = img[10:20, 10:20]
得到一個矩形,但是當我畫上一條線,我發現了線都出現在IMG和rectImage,所以,我怎麼能得到這個工作?
如果使用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.
您可以簡單地使用Python標準庫。做一個原始圖像的淺拷貝如下:
import copy
original_img = cv2.imread("foo.jpg")
clone_img = copy.copy(original_img)
我最喜歡的方法使用cv2.copyMakeBorder沒有邊框,就像這樣。
copy = cv2.copyMakeBorder(original,0,0,0,0,cv2.BORDER_REPLICATE)
第一個答案是正確的,但你說你正在使用固有使用numpy數組的cv2。因此,爲了使一個完整的不同拷貝說「MYIMAGE」:
newImage = myImage.copy()
以上就夠了。無需導入numpy。
所有這些神奇數字的含義是什麼 – raaj 2014-10-07 09:31:20
它們只是範圍在0-100之間的數字。每一步之後只需打印'x'和'y'。然後你會明白這個主意。 – 2014-10-07 10:35:30