我在执行下面这行代码时的意图是使用cv2来绘制我的原始图像(即img)。据我所知,它这样做了,但修改了img(这是不理想的)。你知道吗
cbImg = cv2.drawChessboardCorners(img, (nx, ny), corners, ret)
我知道Python是通过引用传递的,这意味着可以通过该方法更改参数。为了避免修改原始图像,有必要对副本进行操作(例如,如下所示)
cbImg = cv2.drawChessboardCorners(copy.copy(img), (nx, ny), corners, ret)
我将一个副本传递给cv2.drawChessboardCorners(),因为我无法修改该方法。但是,我看到了许多在方法中执行复制的示例。你知道吗
是否有一个最佳实践,关于复制应该发生在哪里?换言之,如果我使用的是其他人的方法,我是否应该始终传递一份副本以确保我的原始图像不被修改?或者,在编写自己的方法时,是否应该始终(或从不)在方法中执行复制,以确保不会无意中修改其他人的参数?此外,假设通过引用传递的参数应该修改(或不修改)通常是明智的吗?你知道吗
最佳实践是让函数清楚地知道它们是否修改了参数。理想情况下,他们不会,因为这更容易推理。如果数据不大,则可以创建和返回新值。你知道吗
只有当您知道函数修改了它的参数,并且您确实需要原始值和修改后的值时,才可以进行复制。你知道吗
相关问题 更多 >
编程相关推荐