我正在编写一个使用测速相机的程序(带有Raspberry Pi相机板) 并且应该给速度比给定速度更高的汽车拍照,然后将照片发送给在路上等着的警察,以节省汽车的数量。
我有一个从这个角度录制的视频: Angle of capturing 我有几个问题:
我尝试了此处描述的算法,但可能我不太了解:
Find the speed of the vehicle from images
这是我尝试检测速度的代码部分:
*在代码中,我检测到汽车中心的一个点,并在汽车行驶时跟踪该点,我知道我需要获取X,Y点和X1,Y1点以及它们之间的时间,并进行计算。
但是当我使用它时:print('centre',centroid[0:2])
我只得到一点(x)。
def update_vehicle(self, vehicle, matches):
# Find if any of the matches fits this vehicle
for i, match in enumerate(matches):
contour, centroid = match
vector = self.get_vector(vehicle.last_position, centroid)
if self.is_valid_vector(vector):
vehicle.add_position(centroid)
self.log.debug("Added match (%d, %d) to vehicle #%d. vector=(%0.2f,%0.2f)"
, centroid[0], centroid[1], vehicle.id, vector[0], vector[1])
#i detect the centre of the car and follow it, I've thought, how can I use the info of points of the centre and
#use it to detect the car, the problem is: I can't understand how to take this info,
#i need the X & Y point,
print(centre',centroid[0:2])
return i
# No matches fit...
vehicle.frames_since_seen += 1
self.log.debug("No match for vehicle #%d. frames_since_seen=%d"
, vehicle.id, vehicle.frames_since_seen)
return None
这是我在其中使用的 centroid 的功能:
def get_centroid(x, y, w, h):
x1 = int(w / 2)
y1 = int(h / 2)
cx = x + x1
cy = y + y1
return (cx, cy)
我将很高兴获得帮助。 谢谢。