光流检测
-
请问可以用光流检测来做距离控制红绿灯吗?
-
光流只能知道xy的变化量,不能知道距离信息。
-
此回复已被删除!
-
@kidswong999 如果不用测出具体的距离呢?只要通过xy的变化量来控制红绿灯的变化就行
-
这有什么问题吗……
-
@kidswong999 请问用光流检测这个例程怎么改可以实现控制红绿灯的变化呢,就是实现镜头远离图像时红灯亮,镜头靠近时绿灯亮?
#图像微分光流旋转/缩放测量
BLOCK_W = 16 # pow2
BLOCK_H = 16 # pow2
import sensor, image, time, math
import sensor
import time
import math
import ide
#支持64x32, 64x64,128x64,128x128. 32x32 需要对 64x64 image 使用 "img.pool(2, 2)"
sensor.reset()
sensor.set_pixformat(sensor.GRAYSCALE)
sensor.set_framesize(sensor.B128X128)
sensor.skip_frames(time = 2000)
clock = time.clock()
extra_fb = sensor.alloc_extra_fb(sensor.width(), sensor.height(), sensor.GRAYSCALE)
extra_fb.replace(sensor.snapshot())
while(True):
clock.tick()
img = sensor.snapshot()
for y in range(0, sensor.height(), BLOCK_H):
for x in range(0, sensor.width(), BLOCK_W):
displacement = extra_fb.find_displacement(img, logpolar=True,roi = (x, y, BLOCK_W, BLOCK_H), template_roi = (x, y, BLOCK_W, BLOCK_H))
if(displacement.response() > 0.1):
rotation_change = displacement.rotation()
zoom_amount = 1.0 + displacement.scale()
pixel_x = x + (BLOCK_W//2) + int(math.sin(rotation_change) * zoom_amount * (BLOCK_W//4))
pixel_y = y + (BLOCK_H//2) + int(math.cos(rotation_change) * zoom_amount * (BLOCK_H//4))
img.draw_line((x + BLOCK_W//2, y + BLOCK_H//2, pixel_x, pixel_y),color = 255)
else:
img.draw_line((x + BLOCK_W//2, y + BLOCK_H//2, x + BLOCK_W//2, y + BLOCK_H//2),color = 0)
ide.display(img)
extra_fb.replace(img)
print(clock.fps())
-
都说了不能知道距离信息,没法实现 镜头远离和靠近