我处理第一个函数中的每一帧,其中我使用cv2.threshold(self.res, 10, 255, cv2.THRESH_BINARY_INV)
在检测运动之前进行预处理。在下一个函数中,我只计算黑色像素的数量并计算平均值。我给cv2.threshold
一个numpy数组,但它返回我tuple
,当我在这里计算黑色像素时,if self.res[x,y] == 0.0:
我得到了这个类型的错误tuple indices must be integers, not tuple
。已经两天了,但运气不好。在
def processImage(self, frame):
self.frame2gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
self.res = cv2.absdiff(self.frame1gray, self.frame2gray)
self.res = cv2.GaussianBlur(self.res, (15, 15), 0)
kernel = np.ones((3, 3), np.uint8)
self.res = cv2.morphologyEx(self.res, cv2.MORPH_OPEN, kernel)
self.res = cv2.morphologyEx(self.res, cv2.MORPH_GRADIENT, kernel)
self.res = cv2.threshold(self.res, 10, 255, cv2.THRESH_BINARY_INV)
print "type: ",type(self.res)
def somethingHasMoved(self):
nb=0 #Will hold the number of black pixels
for x in range(self.height): #Iterate the hole image
for y in range(self.width):
if self.res[x,y] == 0.0:
nb += 1
avg = (nb*100.0)/self.nb_pixels #Calculate the average of black pixel in the image
print"average movement : ",avg
if avg > self.threshold:#If over the ceiling trigger the alarm
return True
else:
return False
目前没有回答
相关问题 更多 >
编程相关推荐