我是OpenCV的新手。在C++中,什么Python函数的作用与 cv::clone() 相同?我只是想找个借口
rectImg = img[10:20, 10:20]
但是当我在它上面画一条线的时候,我发现这条线同时出现在 img 和rectImage上,那么,我该怎么做呢?
sycxhyv71#
Abid Rahman K的答案是正确的,但是你说你使用的是cv2,它本身就使用NumPy数组。所以,要制作一个完全不同的副本,比如说“myImage”:
newImage = myImage.copy()
以上就足够了,不需要导入NumPy(numpy)。
numpy
vvppvyoh2#
如果使用cv2,正确的方法是使用NumPy中的.copy()方法,它将创建所需数组的副本,否则它将只生成该对象的视图。例如:
cv2
.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, the parent array.
dly7yett3#
使用Python 3和opencv-python版本4.4.0,下面的代码应该可以工作:
img_src = cv2.imread('image.png') img_clone = img_src.copy()
zbdgwd5y4#
我最喜欢的方法是使用cv2.copyMakeBorder,它没有边框,就像这样。
copy = cv2.copyMakeBorder(original,0,0,0,0,cv2.BORDER_REPLICATE)
wmtdaxz35#
你可以简单地使用Python标准库,如下所示制作一个原始图像的浅层副本:
import copy original_img = cv2.imread("foo.jpg") clone_img = copy.copy(original_img)
5条答案
按热度按时间sycxhyv71#
Abid Rahman K的答案是正确的,但是你说你使用的是cv2,它本身就使用NumPy数组。所以,要制作一个完全不同的副本,比如说“myImage”:
以上就足够了,不需要导入NumPy(
numpy
)。vvppvyoh2#
如果使用
cv2
,正确的方法是使用NumPy中的.copy()
方法,它将创建所需数组的副本,否则它将只生成该对象的视图。例如:
dly7yett3#
使用Python 3和opencv-python版本4.4.0,下面的代码应该可以工作:
zbdgwd5y4#
我最喜欢的方法是使用cv2.copyMakeBorder,它没有边框,就像这样。
wmtdaxz35#
你可以简单地使用Python标准库,如下所示制作一个原始图像的浅层副本: