zoukankan      html  css  js  c++  java
  • openmv4扫码识别

    学习视频:https://singtown.com/learn/50017/

    主要识别:条形码、二维码、矩形码

    条形码:

    可以用这个网站生成条形码:http://barcode.tec-it.com/zh/Code128?data=OpenMV

    代码如下:

    import sensor, image, time, math
    
    sensor.reset()
    sensor.set_pixformat(sensor.GRAYSCALE)
    sensor.set_framesize(sensor.VGA) # High Res!
    sensor.set_windowing((640, 80)) # V Res of 80 == less work (40 for 2X the speed).
    sensor.skip_frames(30)
    sensor.set_auto_gain(False)  # must turn this off to prevent image washout...
    sensor.set_auto_whitebal(False)  # must turn this off to prevent image washout...
    clock = time.clock()
    
    # Barcode detection can run at the full 640x480 resolution of your OpenMV Cam's
    # OV7725 camera module. Barcode detection will also work in RGB565 mode but at
    # a lower resolution. That said, barcode detection requires a higher resolution
    # to work well so it should always be run at 640x480 in grayscale...
    
    def barcode_name(code):
        if(code.type() == image.EAN2):
            return "EAN2"
        if(code.type() == image.EAN5):
            return "EAN5"
        if(code.type() == image.EAN8):
            return "EAN8"
        if(code.type() == image.UPCE):
            return "UPCE"
        if(code.type() == image.ISBN10):
            return "ISBN10"
        if(code.type() == image.UPCA):
            return "UPCA"
        if(code.type() == image.EAN13):
            return "EAN13"
        if(code.type() == image.ISBN13):
            return "ISBN13"
        if(code.type() == image.I25):
            return "I25"
        if(code.type() == image.DATABAR):
            return "DATABAR"
        if(code.type() == image.DATABAR_EXP):
            return "DATABAR_EXP"
        if(code.type() == image.CODABAR):
            return "CODABAR"
        if(code.type() == image.CODE39):
            return "CODE39"
        if(code.type() == image.PDF417):
            return "PDF417"
        if(code.type() == image.CODE93):
            return "CODE93"
        if(code.type() == image.CODE128):
            return "CODE128"
    
    while(True):
        clock.tick()
        img = sensor.snapshot()
        codes = img.find_barcodes()
        for code in codes:
            img.draw_rectangle(code.rect())
            print_args = (barcode_name(code), code.payload(), (180 * code.rotation()) / math.pi, code.quality(), clock.fps())
            print("Barcode %s, Payload "%s", rotation %f (degrees), quality %d, FPS %f" % print_args)
        if not codes:
            print("FPS %f" % clock.fps())

    运行结果:条形码编号与串口显示的一致,都为6902083907150

    二维码:

    可以用草料二维码生成你想要的内容:http://cli.im/

    效果如下:

    代码如下:

    # 二维码例程
    #
    # 这个例子展示了OpenMV Cam使用镜头校正来检测QR码的功能(请参阅qrcodes_with_lens_corr.py脚本以获得更高的性能)。
    import sensor, image, time
    
    sensor.reset()
    sensor.set_pixformat(sensor.RGB565)
    sensor.set_framesize(sensor.QVGA)
    sensor.skip_frames(time = 2000)
    sensor.set_auto_gain(False)  # 必须关闭此功能,以防止图像冲洗…
    clock = time.clock()
    
    while(True):
        clock.tick()
        img = sensor.snapshot()
        img.lens_corr(1.8) # 1.8的强度参数对于2.8mm镜头来说是不错的。
        for code in img.find_qrcodes():
            img.draw_rectangle(code.rect(), color = (255, 0, 0))
            print(code)
        #print(clock.fps())

    运行结果:二维码信息与串口显示的一致,都为oldxi

    注意:其他信息可以参考函数的具体用法

    正是步行者,一步步登峰!

  • 相关阅读:
    WPF 柱状图显示数据
    WPF 寻找控件模板中的元素
    WPF 寻找数据模板中的元素
    WPF VisualTreeHelper的使用
    WPF依赖项属性不需要包装属性也可以工作
    WPF依赖属性对内存的使用方式
    WPF Binding Path妙用
    WPF Binding Path妙用代码实现
    WPF Binding妙处-既无Path也无Source
    WPF ListView的使用
  • 原文地址:https://www.cnblogs.com/ouyangmail/p/14281943.html
Copyright © 2011-2022 走看看