无人机搭载openmv识别红色模块,经常传不回数据
-
用的是例程 色块检测的例程检测红色十字架,然后有时候可以检测得到数据,有时候检测不到,而且感觉跟光的强弱有很大的关系,灯光一弱,就识别不到红色模块了,请问有什么改进的方法吗,正在参加比赛,急急急,识别的是红色十字架
例程代码如下# 色块监测 例子 # # 这个例子展示了如何通过find_blobs()函数来查找图像中的色块 # 这个例子查找的颜色是深绿色 from pyb import UART import json import sensor, image, time # 颜色追踪的例子,一定要控制环境的光,保持光线是稳定的。 #green_threshold = ( 15, 45, 15, 40, -80, -40) green_threshold=(64, 44, 12, 86, 52, -15); #设置绿色的阈值,括号里面的数值分别是L A B 的最大值和最小值(minL, maxL, minA, # maxA, minB, maxB),LAB的值在图像左侧三个坐标图中选取。如果是灰度图,则只需 #设置(min, max)两个数字即可。 sensor.reset() # 初始化摄像头 sensor.set_pixformat(sensor.RGB565) # 格式为 RGB565. sensor.set_framesize(sensor.QVGA) # 使用 QaaaaaaQVGA 速度快一些 sensor.skip_frames(10) # 跳过10帧,使新设置生效 sensor.set_auto_whitebal(False) #关闭白平衡。白平衡是默认开启的,在颜色识别中,一定要关闭白平衡。 clock = time.clock() # 追踪帧率 uart = UART(3, 115200) while(True): clock.tick() # Track elapsed milliseconds between snapshots(). img = sensor.snapshot() # 从感光芯片获得一张图像 blobs = img.find_blobs([green_threshold],x_stride=10,y_stride=10) if blobs: #如果找到了目标颜色 last_pixels=0; data=[] out_=blobs[0]; for b in blobs: #迭代找到的目标颜色区域 # Draw a rect around the blob. if b.pixels()>last_pixels: last_pixels=b.pixels(); out_=b; img.draw_rectangle(out_[0:4]); #用矩形标记出目标颜色区域 img.draw_cross(out_[5], out_[6],color=(0,255,0)) # cx, cy # print("fps:%d local:%d,%d" % (clock.fps() ,b[5], b[6])) # img.draw_string(10,20, "local:%d,%d"% (b[5], b[6]),color=(128,0,0)) #在目标颜色区域的中心画十字形标记 data.append((out_[5], out_[6])) data_out = json.dumps(set(data)) uart.write(data_out +'\n') print(data_out)
-
视觉系统都受光源的影响,最好控制好环境光,或者加补光灯。
-
@李大庄 您好,最近也在做无人机识别红色模块,想向您请教一些关于无人机处理红色模块的问题,不知能否交流一下