@kidswong999 大佬,救救孩子
G
gzs3
@gzs3
0
声望
5
楼层
414
资料浏览
0
粉丝
1
关注
gzs3 发布的帖子
-
RE: 能不能在上一次输出的坐标和这一次输出的坐标来绘画线段
我要在b[5],b[6]这个坐标的两次输出画线,我应该怎么改能?刚接触代码,纯小白不是很懂怎么改
#进行帧分差并对差值的像素点进行色块识别,输出它的坐标 import sensor, image, pyb, os, time TRIGGER_THRESHOLD = 5 green_threshold = (15,80) BG_UPDATE_FRAMES = 50 # 融合前有多少帧。 BG_UPDATE_BLEND = 128 # How much to blend by... ([0-256]==[0.0-1.0]). sensor.reset() # 复位并初始化传感器。 sensor.set_pixformat(sensor.GRAYSCALE) # or sensor.RGB565 #设置图像色彩格式,有RGB565色彩图和GRAYSCALE灰度图两种 sensor.set_framesize(sensor.QVGA) # or sensor.QQVGA (or others) #设置图像像素大小 sensor.skip_frames(time = 2000) # 让新的设置生效。 sensor.set_auto_whitebal(False) # 关闭白平衡。 clock = time.clock() # 跟踪FPS帧率 # 从主帧缓冲区的RAM中取出以分配第二帧缓冲区。 # 帧缓冲区中的RAM比MicroPython堆中的RAM多得多。 # 但是,在执行此操作后,您的某些算法的RAM会少得多...... # 所以,请注意现在摆脱RAM问题要容易得多。 # 然而,帧差分不会占用帧缓冲区中的大量额外空间。 # 但是,如果你这样做,像AprilTags这样的东西会起作用,也可能不会起作用... extra_fb = sensor.alloc_extra_fb(sensor.width(), sensor.height(), sensor.RGB565) print("About to save background image...") sensor.skip_frames(time = 20) # 给用户一个时间来准备 extra_fb.replace(sensor.snapshot()) print("Saved background image - Now frame differencing!") triggered = False frame_count = 0 while(True): clock.tick() # 追踪两个snapshots()之间经过的毫秒数. img = sensor.snapshot() # 拍一张照片,返回图像 frame_count += 50 if (frame_count > BG_UPDATE_FRAMES): frame_count = 0 # 融入新的帧。 我们在这里做256-alpha,因为我们想将新帧混合到背景中。 # 而不是把背景融入到新帧(这仅仅做alpha)。 # 通过((NEW*(alpha))+(OLD*(256-alpha)))/256融合每个像素。 # 因此,低alpha导致新图像的低混合,而高alpha导致新图像的高混合。我们需要对此更新进行反转。 #img.blend(extra_fb, alpha=(256-BG_UPDATE_BLEND)) extra_fb.replace(img) # 用 "abs(NEW-OLD)" 帧差替换图像。 img.difference(extra_fb) blobs = img.find_blobs([green_threshold],meger = True,margin=100) if blobs: for b in blobs: img.draw_rectangle(b[0:4]) # rect #用矩形标记出目标颜色区域 img.draw_cross(b[5], b[6]) # cx, cy #在目标颜色区域的中心画十字形标记 print(b[5], b[6]) #输出目标物体中心坐标 img.draw_line() #hist = img.get_histogram() # 下面的代码通过比较第99百分位值(例如,非离群值最大值与第90百分位值(例如非最大值)来工作。 # 两个值之间的差异将随着差异图像看起来像素变化而增大。 #diff = hist.get_percentile(0.99).l_value() - hist.get_percentile(0.90).l_value() #triggered = diff > TRIGGER_THRESHOLD print(clock.fps()) # 注意: 当连接电脑后,OpenMV会变成一半的速度。当不连接电脑,帧率会增加。