导航

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

    nfy1

    @nfy1

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

    nfy1 关注

    nfy1 发布的帖子

    • 识别最大色块例程中max_blob.cx(),max_blob.cy(),这两个是什么。
      img = sensor.snapshot() # Take a picture and return the image.
      
          blobs = img.find_blobs([yellow_threshold])
          if blobs:
              max_blob=find_max(blobs)
              print('sum :', len(blobs))
              img.draw_rectangle(max_blob.rect())
              img.draw_cross(max_blob.cx(), max_blob.cy())
      
              output_str="[%d,%d]" % (max_blob.cx(),max_blob.cy()) #方式1
              #output_str=json.dumps([max_blob.cx(),max_blob.cy()]) #方式2
              print('you send:',output_str)
              uart.write(output_str+'\r\n')
          else:
              print('not found!')
      
      发布在 OpenMV Cam
      N
      nfy1
    • 把脚本保存到flash里后,脱机不运行,怎么办,根据教程操作的。

      在ide运行的时候绿灯是不断闪烁的,但是脱机运行的时候绿灯不闪烁。

      import sensor, image, time, math,pyb
      from pyb import Pin, Timer,UART
      
      uart = pyb.UART(3,115200,timeout_char=1000)#串口初始化
      
      # Tracks a black line. Use [(128, 255)] for a tracking a white line.
      GRAYSCALE_THRESHOLD = [(0, 46)]
      
      ROIS = [
              (0,0,64,64,0)
             ]
      #----------------------------------------寻找直线变量----------------------------------------#
      #---------------------------------------摄像头初始化-----------------------------------------#
      sensor.reset()
      sensor.set_pixformat(sensor.GRAYSCALE)
      sensor.set_framesize(sensor.B64X64)                  # 颜色追踪:160*120  光流检测:40*30
      sensor.skip_frames(20)
      sensor.set_auto_gain(False)                         # 颜色追踪关闭自动增益
      sensor.set_auto_whitebal(False)                     # 颜色追踪关闭白平衡
      Sum_x=0;
      Sum_y=0;
      flag=0;
      i=0;  #记录第几行数据
      j=0;  #记录直线数量
      led=pyb.LED(3)#必要的时候进行红外补光
      
      #检测圆形中心点的坐标
      center_x=0;
      center_y=0;
      center_update=1;#中心圆位置更新的标志
      center_x_old=0;
      center_y_old=0;
      center_pos_old=0;
      
      center_x_down=0;
      center_y_down=0;
      
      center_x_up=0;
      center_y_up=0;
      
      center_x_mid=0;
      center_y_mid=0;
      
      center_y_left=0;
      center_x_left=0;
      
      center_y_right=0;
      center_x_right=0;
      
      center_y_rect=0;
      center_x_rect=0;
      
      center_y_rect_old=0;
      center_x_rect_old=0;
      
      center_flag1=0;#上下
      center_flag2=0;#左右
      center_flag3=0;#通过roll来调整黑线的位置  通过yaw来调整机头方向  矩形1和2=0;
      center_flag4=0;
      center_flag5=0;
      center_flag6=0;
      turn_flag=0;#转弯的标志
      last_x=0;
      last_y=0;
      center_pos=0;
      yaw_angle=0;
      out_str1='';
      clock = time.clock()
      
      led=pyb.LED(2)#必要的时候进行红外补光
      #定义一个定时发送数据的函数
      def tick(timer):#we will receive the timer object when being called
              global flag
              flag=1
      tim = Timer(4,freq=20)            # create a timer object using timer 4 - trigger at 1Hz
      tim.callback(tick)                # set the callback to our tick function
      #--------------------------------------while循环开始-----------------------------------------#
      
      while(True):
          if(flag==1):
              led.on();
              img=sensor.snapshot()
              img_old=img.copy()
              #--------------------------------------光流定点-----------------------------------------#
              img.lens_corr(1.5)#for 2.8mm lens...摄像头畸变纠正
              #--------------------------------------检测直线交点的位置---------------------------------------#
              #img.binary(GRAYSCALE_THRESHOLD,invert=1);
              #--------------------------------------寻找圆心的位置--------------------------------------#
              #检测圆形位置
              for r in ROIS:
                  blobs=img_old.find_blobs(GRAYSCALE_THRESHOLD, roi=r[0:4], merge=True,pixels_area=10) # r[0:4] is roi tuple.
                  if blobs:#如果找到了颜色块
                      largest_blob=max(blobs, key=lambda b: b.pixels())
                      if(largest_blob[4]>=10 and largest_blob[4]<=1500):#像素点个数
                          if(largest_blob[3]>=3 and largest_blob[3]<=60):
                              if(largest_blob[2]>=3 and largest_blob[2]<=60):
                                  center_y_rect=largest_blob.cy();
                                  center_x_rect=largest_blob.cx();
                                  img.draw_rectangle(largest_blob.rect())
              img.draw_cross(center_x_rect,center_y_rect,2)
              #50ms发送一次数据到飞控
              if(yaw_angle<0):
                  out_str1='-'
                  out_str1+= '%.2d'% int(-yaw_angle)    #寻找黑线中心位置计算出偏转角度
              else:
                  out_str1='+'
                  out_str1+= '%.2d'% int(yaw_angle)     #寻找黑线中心位置计算出偏转角度
              if(Sum_x<0):
                  out_str1+='-'
                  out_str1+='%.2d'%  int(-Sum_x);       #光流数据
              else:
                  out_str1+='+'
                  out_str1+='%.2d'%  int(Sum_x)         #寻找黑线中心位置计算出偏转角度
              if(Sum_y<0):
                  out_str1+='-'
                  out_str1+= '%.2d'% int(-Sum_y);       #光流数据
              else:
                  out_str1+='+'
                  out_str1+= '%.2d'% int(Sum_y);        #光流数据
      
              out_str1+='%.2d'%      int(center_pos);
              out_str1+='%.2d'%      int(center_x_rect); #圆心的位置
              out_str1+='%.2d'%      int(center_y_rect);
              out_str1+='%.2d'%      int(turn_flag);     #直角标志位
              out_str1+='%.2d'%      int(last_x);        #直角交点位置
              out_str1+='%.2d'%      int(last_y);
              uart.write('s'+out_str1+'#')
              #像素位移之和清零
              turn_flag=0;
              Sum_x=0
              Sum_y=0
              out_str1=''#清除之前的数据
              flag=0;
              led.off();
              #-----------------------------------串口打印数据-----------------------------------------#
      
      
      
      
      
      
      发布在 OpenMV Cam
      N
      nfy1