导航

    • 登录
    • 搜索
    • 版块
    • 产品
    • 教程
    • 论坛
    • 淘宝
    1. 主页
    2. cmvs
    C
    • 举报资料
    • 资料
    • 关注
    • 粉丝
    • 屏蔽
    • 帖子
    • 楼层
    • 最佳
    • 群组

    cmvs

    @cmvs

    0
    声望
    2
    楼层
    162
    资料浏览
    0
    粉丝
    0
    关注
    注册时间 最后登录

    cmvs 关注

    cmvs 发布的帖子

    • 我想通过判断小球在openmv什么方向,通过串口发送字符串控制小车,为什么最后判断距离出现了图片的问题并且显示a未定义?

      0_1678176290199_微信图片_20230307160250.png

      import sensor, image , time  #导入摄像头,机器视觉,时间模块
      from pyb import UART,LED     #从pyb中导入UART(串口)模块,LED模块
      import ustruct
      import json
      
      #开启LED灯
      LED(1).on()
      LED(2).on()
      LED(3).on()
      
      #摄像头设置
      sensor.reset()               #Initialize the camera sensor.
      sensor.set_pixformat(sensor.RGB565)#use RGB565.
      sensor.set_framesize(sensor.QVGA) #use QQVGA for speed.
      sensor.skip_frames(10)       #Let new settings take affect.
      sensor.set_auto_whitebal(False) #turn this off.
      clock = time.clock()             #Tracks EPS
      
      yellow_threshold = ( 46,  100,  -68,   72,   58,   92) #颜色阙值设置(此处为红色颜色阀值)
      size_threshold = 9000 #目标色块面积设置
      
      uart = UART (3,115200)#定义串口3变量
      uart.init(115200, bits=8, parity=None, stop=1) #串口初始化设置
      #寻找最大色块函数
      def find_max(blobs):
          max_size=0
          for blob in blobs:
              if blob[2]*blob[3] > max_size:
                  max_blob=blob
                  max_size = blob[2]*blob[3]
          return max_blob
      
      
      while(True):
          clock.tick() #时钟设置
          img = sensor.snapshot() #获取一张图像
      
          blobs = img.find_blobs ([yellow_threshold]) #调用寻找色块函数
      
      #找到目标颜色色块
          if blobs:
              max_blob = find_max (blobs) #找到目标颜色物体中面积最大的物体
              x_error = max_blob[5] #目标颜色物体的中心横坐标
              y_error = max_blob[6]
              width = max_blob[2]#目标颜色物体的宽度
              hight = max_blob[3]#目标颜色物体的高度
      
              img.draw_rectangle(max_blob[0:4]) #用方块圈出目标颜色物体
              img.draw_cross(max_blob[5],max_blob[6]) #对目标颜色物体画十字
      
              x_error = round(x_error) #对目标颜色物体的中心横坐标取整数
              y_error = round(y_error)
              width = round(width)#目标颜色物体的宽度取整数
              hight = round(hight)#目标颜色物体的高度取整数
              a = x_error-width /2#计算出小球边缘靠左还是靠右
              print("x error and y error and width and hight and a :",x_error,y_error,width,hight,a)
          elif a<=77:
              uart.write('1')#距离小于77给串口发送1
              print('1')
          elif(a>=227):
              uart.write('2')#距离大于227给串口发送2
              print('2')
          elif(a>77 and a<227):
              uart.write('3')#距离在77-227之间给串口发送3
              print('3')
      
          else:
              uart.write ('0') #没找到目标颜色物体通过串口发送字符1
              print ('0')
      
      发布在 OpenMV Cam
      C
      cmvs