OpenMV:15追踪其他物体的小车

追踪矩形的小车

其中car.py和pid.py与"追小球的小车"中一致,不需要更改 需要更改的地方

    a.返回摄像头中的矩形:rects = find_rects(threshold)函数 b.计算方向误差(左右):原先为:x_error = max_blob[5]-img.width()/2—>视野中最大色块的中心x位置-摄像头的中心位置 用于计算目标在摄像头中偏离中心的距离 改成:x_error = max_rect[0]+max_rect[2]/2-img.width()/2—>rect类无法直接调出矩形的中心x坐标,因此得进行计算视野中最大矩形左上角的x坐标 + 矩形一半的宽度 - 摄像头中心的x坐标 c.在色块的中心(cx,cy)画十字:img.draw_cross(max_blob[5], max_blob[6]) 改成:img.draw_cross(int(max_rect[0]+max_rect[2]/2), int(max_rect[1]+max_rect[3]/2))此处要强制类型转换!

追踪AprilTags的小车

其中car.py和pid.py与"追小球的小车"中一致,不需要更改 需要更改的地方

    a.返回摄像头中的AprilTags:rects = find_apriltags()函数 b.计算方向误差(左右):原先为:x_error = max_blob[5]-img.width()/2—>视野中最大色块的中心x位置-摄像头的中心位置 用于计算目标在摄像头中偏离中心的距离 改成:x_error = max_apriltag[6]-img.width()/2—>AprilTags返回值的数组apriltag索引值和blob不一样 c.在色块的中心(cx,cy)画十字:img.draw_cross(max_blob[5], max_blob[6]) 改成:img.draw_cross(max_apriltag[6],max_apriltag[7])AprilTags返回值的数组apriltag索引值和blob不一样 d.如果想查找二维码就改成image.find_qrcodes([roi])

追踪模板的小车

其中car.py和pid.py与"追小球的小车"中一致,不需要更改 需要更改的地方

    图像格式改为灰度图sensor.set_pixformat(sensor.GRAYSCALE) 导入模块from image import SEARCH_EX, SEARCH_DS 创建或导入一个模板,template = image.Image("/template.pgm")注意这个模板必须得是pgm格式的 修改查找函数img.find_template(template, 0.70, step=4, search=SEARCH_EX)
r = img.find_template(template, 0.70, step=4, search=SEARCH_EX) #, roi=(10, 0, 60, 60))
    #find_template(template, threshold, [roi, step, search])
    #threshold中的0.7是相似度阈值,roi是进行匹配的区域(左上顶点为(10,0),长80宽60的矩形),
    #注意roi的大小要比模板图片大,比frambuffer小。
    #把匹配到的图像标记出来
经验分享 程序员 微信小程序 职场和发展