导航

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

    ldsc 发布的帖子

    • 请问openmv 如何从不同角度、不同距离,识别形状不规则的物体,比如钥匙?

      请问openmv 如何识别形状不规则的物体,比如钥匙?

      发布在 OpenMV Cam
      L
      ldsc
    • 请问tag标签 3D定位的原理是什么?

      请问tag标签 3D定位的原理是什么?

      发布在 OpenMV Cam
      L
      ldsc
    • 请问这个测出的距离,是相机到目标物体平面的垂直距离吗?如果目标物体在图像左侧,要如何测距?

      0_1575510432664_7c873d0a-3346-4162-ae73-8463c8ee9fe8-image.png

      发布在 OpenMV Cam
      L
      ldsc
    • 单目是否可以完成三维定位?如果我想定位目标点的世界坐标,openmv是否可以完成?

      单目是否可以完成三维定位?如果我想定位目标点的世界坐标,openmv是否可以完成?

      发布在 OpenMV Cam
      L
      ldsc
    • 请问例程中的机器学习能否扩展到别的物体?比如鸡蛋苹果之类的

      请问例程中的机器学习能否扩展到别的物体?比如鸡蛋苹果之类的

      发布在 OpenMV Cam
      L
      ldsc
    • 请问Zc能否通过教程里关于测距的程序测出?

      0_1575197483330_87852783-06a8-4d98-9440-de93216654b1-image.png

      发布在 OpenMV Cam
      L
      ldsc
    • 请问 openmv 里得到的小球的xy像素坐标,如何转化成舵机旋转的角度的?

      请问 openmv 里得到的小球的xy像素坐标,如何转化成舵机旋转的角度的?

      发布在 OpenMV Cam
      L
      ldsc
    • RE: 请问同一个物体,想要在主程序中识别两次不同角度的特征点,第二次识别总是不成功?
      # 利用特征点检测特定物体例程。
      # 向相机显示一个对象,然后运行该脚本。 一组关键点将被提取一次,然后
      # 在以下帧中进行跟踪。 如果您想要一组新的关键点,请重新运行该脚本。
      # 注意:请参阅文档以调整find_keypoints和match_keypoints。
      import sensor, time, image
      yellow_threshold   = (23, 97, 62, -5, 10, 94)
      # Reset sensor
      sensor.reset()
      
      # Sensor settings
      sensor.set_pixformat(sensor.RGB565) # 格式为 RGB565.
      sensor.set_framesize(sensor.QVGA) # 使用 QQVGA 速度快一些
      sensor.skip_frames(time = 2000) # 跳过2000s,使新设置生效,并自动调节白平衡
      sensor.set_auto_gain(False) # 关闭自动自动增益。默认开启的,在颜色识别中,一定要关闭白平衡。
      sensor.set_auto_whitebal(False)
      
      #画出特征点
      def draw_keypoints(img, kpts):
          if kpts:
              print(kpts)
              img.draw_keypoints(kpts)
      #        img = sensor.snapshot()
      #        time.sleep(1000)
      
      def find_max(blobs):
          max_size=0
          for blob in blobs:
              if blob.pixels() > max_size:
                  max_blob=blob
                  max_size = blob.pixels()
          return max_blob
      
      kpts1 = None
      kpts2 = None
      kpts3 = None
      r = [0,0,0,0]
      #kpts1保存目标物体的特征,可以从文件导入特征,但是不建议这么做。
      #kpts1 = image.load_descriptor("/desc.orb")
      #img = sensor.snapshot()
      #draw_keypoints(img, kpts1)
      
      clock = time.clock()
      
      while (True):
          clock.tick()
          img = sensor.snapshot() 
          if (kpts1 == None):
              img = img.to_grayscale()
              #如果是刚开始运行程序,提取最开始的图像作为目标物体特征,kpts1保存目标物体的特征
              #默认会匹配目标特征的多种比例大小,而不仅仅是保存目标特征时的大小,比模版匹配灵活。
              # NOTE: By default find_keypoints returns multi-scale keypoints extracted from an image pyramid.
              kpts1 = img.find_keypoints(max_keypoints=150, threshold=1, scale_factor=1.2)
              draw_keypoints(img, kpts1)
          
          elif (kpts2 == None):
              img = sensor.snapshot() 
              img = img.to_grayscale()
              kpst2 = img.find_keypoints(max_keypoints=150, threshold=1, scale_factor=1.2)
              draw_keypoints(img, kpts2)
              #image.find_keypoints(roi=Auto, threshold=20, normalized=False, scale_factor=1.5, max_keypoints=100, corner_detector=CORNER_AGAST)
              #roi表示识别的区域,是一个元组(x,y,w,h),默认与framsesize大小一致。
              #threshold是0~255的一个阈值,用来控制特征点检测的角点数量。用默认的AGAST特征点检测,这个阈值大概是20。用FAST特征点检测,这个阈值大概是60~80。阈值越低,获得的角点越多。
              #normalized是一个布尔数值,默认是False,可以匹配目标特征的多种大小(比ncc模版匹配效果灵活)。如果设置为True,关闭特征点检测的多比例结果,仅匹配目标特征的一种大小(类似于模版匹配),但是运算速度会更快一些。
              #scale_factor是一个大于1.0的浮点数。这个数值越高,检测速度越快,但是匹配准确率会下降。一般在1.35~1.5左右最佳。
              #max_keypoints是一个物体可提取的特征点的最大数量。如果一个物体的特征点太多导致RAM内存爆掉,减小这个数值。
              #corner_detector是特征点检测采取的算法,默认是AGAST算法。FAST算法会更快但是准确率会下降。
              #画出此时的目标特征
          elif (kpts1!= None and kpts2!= None):
              #当与最开始的目标特征进行匹配时,默认设置normalized=True,只匹配目标特征的一种大小。
              # NOTE: When extracting keypoints to match the first descriptor, we use normalized=True to extract
              # keypoints from the first scale only, which will match one of the scales in the first descriptor.
              kpts3 = img.find_keypoints(max_keypoints=150, threshold=1, scale_factor=1.2)
              #如果检测到特征物体
              if (kpts3):
                  #匹配当前找到的特征和最初的目标特征的相似度
                  match = image.match_descriptor(kpts1, kpts3, threshold=60)
                  #image.match_descriptor(descritor0, descriptor1, threshold=70, filter_outliers=False)。本函数返回kptmatch对象。
                  #threshold阈值设置匹配的准确度,用来过滤掉有歧义的匹配。这个值越小,准确度越高。阈值范围0~100,默认70
                  #filter_outliers默认关闭。
                  #match.count()是kpt1和kpt2的匹配的近似特征点数目。
                  print("%d"%(match.count()))#如果大于10,证明两个特征相似,匹配成功。
                  if (match.count()>2):
                      r = match.rect()
                      flag = 1
                      flag1 = 1
                      print(r)
                      img = img.to_rgb565()
                      img = sensor.snapshot()
                      blobs = img.find_blobs([yellow_threshold],roi = r)
                      if blobs:
                         max_blob=find_max(blobs)
                         img.draw_cross(max_blob.cx(), max_blob.cy())
                         print(max_blob.cx())
                         print(max_blob.cy())
                  else:
                      match = image.match_descriptor(kpts2, kpts3, threshold=60)
                      if (match.count()>2):
                          r = match.rect()
                          flag = 1
                          flag1 = 1
                          print(r)
                          img = img.to_rgb565()
                          img = sensor.snapshot()
                          blobs = img.find_blobs([yellow_threshold],roi = r)
                          if blobs:
                             max_blob=find_max(blobs)
                          #   img.draw_rectangle(max_blob.rect())
                             img.draw_cross(max_blob.cx(), max_blob.cy())
                             print(max_blob.cx())
                             print(max_blob.cy())
                        
                        
                       
      
      
      
      
      
      
      
      发布在 OpenMV Cam
      L
      ldsc
    • 请问同一个物体,想要在主程序中识别两次不同角度的特征点,第二次识别总是不成功?

      0_1574826919293_46df6ce3-c619-4304-bebe-f01f3387be2f-image.png

      发布在 OpenMV Cam
      L
      ldsc
    • 请问openmv返回的像素点如何转化为实际的距离呢?

      请问openmv返回的比如X,Y的坐标,XY像素点如何转化为实际的距离呢?

      发布在 OpenMV Cam
      L
      ldsc
    • openmv可以和MATLAB通讯吗?

      openmv可以和MATLAB通讯吗?

      发布在 OpenMV Cam
      L
      ldsc
    • 灰度图下,再次初始化传感器为彩图模式,进行色块识别,检测速度突然特别慢,应该如何改进?

      0_1574581905625_033ce00e-5f77-4f68-88dc-65cbeb9e82bf-image.png

      发布在 OpenMV Cam
      L
      ldsc
    • 在灰度图下,用img.to_rgb565([copy=True]),没能把灰度图转化为彩图?

      0_1574568043615_09083752-c337-4d3c-9c05-545285ddef54-image.png

      发布在 OpenMV Cam
      L
      ldsc
    • 您好,请问特征点识别时,换了个角度,图像就识别不出了,有什么改进方法吗?

      您好,请问特征点识别时,换了个角度,图像就识别不出了,有什么改进方法吗?

      发布在 OpenMV Cam
      L
      ldsc
    • 球状物体可以用特征点识别来做吗?椭球状呢?特征点识别适用于哪些物体呢?

      球状物体可以用特征点识别来做吗?椭球状呢?特征点识别适用于哪些物体呢?

      发布在 OpenMV Cam
      L
      ldsc
    • 请问用例程的特征点识别可以识别一些不规则的物体吗?比如订书机,眼药水,夹子之类的?需要改什么地方吗?

      按照例程做特征点识别的时候,有一些规则的物体(比如小球)总是找不到特征点,请问这是怎么回事呢?

      发布在 OpenMV Cam
      L
      ldsc
    • RE: 请问如果有三个物体,12颜色相同形状不同,23颜色不同形状相同?

      那长方体和椭球可以用特征点识别来区分吗?对于这三个物体的区分,您有什么建议吗?

      发布在 OpenMV Cam
      L
      ldsc
    • RE: 请问如果有三个物体,12颜色相同形状不同,23颜色不同形状相同?

      0_1574083199450_e320778a-12c0-49ba-ba57-bd62d90d1db5-image.png

      1和3是两个椭球,2是一个长方体

      发布在 OpenMV Cam
      L
      ldsc
    • 请问如果有三个物体,12颜色相同形状不同,23颜色不同形状相同?

      请问如果有三个不规则物体,1和2颜色相同形状不同,2和3颜色不同形状相同。已进行特征值识别,从12中找到我需要的物体2,能再次初始化摄像头为RGB模式,再从23找到我需要的2吗?摄像头还没到所以做不了实验,麻烦方便的话回复一下,非常感谢!

      发布在 OpenMV Cam
      L
      ldsc