• openmv之测距


    通过openmv来进行测距的两种办法

    第一就是通过ApriTag的3D定位进行测距

    第二就是通过利用参照物进行测距

     通过上图可以看出实际距离和物体的像素大小成反比

    如何得到常数k就是需要解决的问题

    先将物体放在固定的距离x,然后打印出物体的像素大小y,就可以得到常数k

    k = x*y

     1 # Measure the distance
     2 #
     3 # This example shows off how to measure the distance through the size in imgage
     4 # This example in particular looks for yellow pingpong ball.
     5 
     6 import sensor, image, time
     7 
     8 # For color tracking to work really well you should ideally be in a very, very,
     9 # very, controlled enviroment where the lighting is constant...
    10 yellow_threshold   = ( 56,   83,    5,   57,   63,   80)
    11 # You may need to tweak the above settings for tracking green things...
    12 # Select an area in the Framebuffer to copy the color settings.
    13 
    14 sensor.reset() # Initialize the camera sensor.
    15 sensor.set_pixformat(sensor.RGB565) # use RGB565.
    16 sensor.set_framesize(sensor.QQVGA) # use QQVGA for speed.
    17 sensor.skip_frames(10) # Let new settings take affect.
    18 sensor.set_auto_whitebal(False) # turn this off.
    19 clock = time.clock() # Tracks FPS.
    20 
    21 K=5000#the value should be measured
    22 #k = 物体放置距离 × 打印的Lx 
    23 
    24 while(True):
    25     clock.tick() # Track elapsed milliseconds between snapshots().
    26     img = sensor.snapshot() # Take a picture and return the image.
    27 
    28     blobs = img.find_blobs([yellow_threshold])
    29     if len(blobs) == 1:
    30         # Draw a rect around the blob.
    31         b = blobs[0]
    32         img.draw_rectangle(b[0:4]) # rect
    33         img.draw_cross(b[5], b[6]) # cx, cy
    34         Lx = (b[2]+b[3])/2
    35         print(Lx)
    36         length = K/Lx
    37         print(length)
    38 
    39     #print(clock.fps()) # Note: Your OpenMV Cam runs about half as fast while
    40     # connected to your computer. The FPS should increase once disconnected.

    根据上面代码先将物体放置在固定位置,例如10cm,然后打印出该物体在openmv中的像素值Lx

    可以得出k =10 * Lx

    然后就可以对物体进行测距

    对于Lx 的计算是先通过将捕捉的物体颜色范围的色块,然后通过b[2]色块的宽和b[3]色块的高取的物体的平均半径

    参考文章 https://blog.csdn.net/qq_42518517/article/details/101059853

  • 相关阅读:
    Java StringBuilder、基本类型的包装类
    立个Flag不学好PHP誓不罢休
    LAMP搭建 转
    CentOS使用yum源中自带的rpm包安装LAMP环境
    CentOS RedHat YUM 源扩展补充(32位、64位均有)
    解决phpmyadmin上传文件大小限制的配置方法
    lanmp v2.5一键安装包发布(包括lamp,lnmp,lnamp安装)
    图像处理 jpg png gif svg
    NAT模式/路由模式/全路由模式 (转)
    网页制作中绝对路径和相对路径的区别
  • 原文地址:https://www.cnblogs.com/miaorn/p/12242671.html
Copyright © 2020-2023  润新知