我正在使用管道创建视觉跟踪程序。在我的管道中,我有以下代码:
@staticmethod
def __approx_contours(input_contours):
output = []
kp = None
for contour in input_contours:
error = 0.1*cv2.arcLength(contour, True)
approx = cv2.approxPolyDP(contour, error, True)
print(approx)
kp = Keeper(approx)
print(kp)
if kp == None:
return output
for x,y in zip(kp.getX(),kp.getY()):
output.append((x,y))
kp.empty()
return output
这里是守护者课程
class Keeper:
_x = []
_y = []
# constructor, requires a 3-D array
def __init__(self, third_dim):
if third_dim.ndim == 3:
for row in third_dim:
for col in row:
self._x.append(col[0])
self._y.append(col[1])
else:
raise NotThirdDimension("Entered array was not three dimensional")
print(self._x)
print(self._y)
# return object "X" array
def getX(self):
return self._x
# return object "Y" array
def getY(self):
return self._y
def empty(self):
self._x = []
self._y = []
忽略__init__
中的打印语句,它们仅用于调试目的。
当前状态的示例输出:
[[[183 169]]
[[187 323]]]
Keeper
[183, 187]
[169, 323]
<keeper.Keeper object at 0x05199630>
[[[ 62 117]]
[[ 93 366]]
[[187 256]]]
Keeper
[183, 187, 62, 93, 187]
[169, 323, 117, 366, 256]
<keeper.Keeper object at 0x06F10B70>
看起来我的Keeper对象中的值没有被重置,尽管调用了kp.empty()。我还注意到Keeper对象正在改变内存中的位置,也许这是问题的一部分,但我不确定我哪里出错了。完整代码可用here
答案 0 :(得分:1)
问题是用户@ juanpa.arrivillaga说,我使用的是class属性而不是实例属性。为解决我的问题,需要对Keeper进行以下更改:
$(document).on('click', 'ul#og-grid li', function () {
// Do Stuff Here
});