openmv_openmvg - CSDN
精华内容
参与话题
  • Openmv入门:让你少掉更多的坑!

    万次阅读 多人点赞 2017-11-23 11:20:29
    我和我的小伙伴们玩Openmv有整整一个年头了。 从一开始买来模块跟着玩,到后来的尝试去改进自己DIY玩,到现在的定版带大家一起玩。 这期间,经历了无数多的坑。 下面我来和大家分享一下我印象很深的一些大坑,防止要...

    我和我的小伙伴们玩Openmv有整整一个年头了。

    从一开始买来模块跟着玩,到后来的尝试去改进自己DIY玩,到现在的定版带大家一起玩。

    这期间,经历了无数多的坑。

    下面我来和大家分享一下我印象很深的一些坑,防止要上手或者自己DIY的小伙伴们走弯路。


    更多技术交流请加群:物致DIY(646461928)


    坑一:Openmv主流版本为openmv2和openmv3:

    openmv2的MCU是F4,openmv3的MCU是F7,性能和资源差距比较大。

    而图像识别本身就是很吃资源的,因此性能和资源直接决定了图像识别功能的流畅度,复杂程度等等。

    F4在做很多要求高一点的图像识别应用的时候很吃力。

    鉴于此,如果成本要求不是太高或者仅仅是买来学习,建议使用Openmv3


    坑二:Openmv3主流有两个版本:

    Openmv3最早期的版本主MCU是stm32f765vgt6,后来的新版本的主MCU是stm32f765vit6。

    这两款芯片的区别就是早期版本是1M的flash,新版本是2M的flash。

    flash越大,可以做的应用就越多。

    所以我们在玩的过程中发现。。。新的固件无法烧录到1Mflash中去。

    鉴于此,如果大家不是只做某个固定的简单应用,建议还是选择2Mflash,不然玩起来发现内存不足会让人抓狂。


    坑三:Openmv2主流也有两个版本:

    Openmv2最早版本的摄像头是200W像素的,后来的新版本摄像头是30W。

    在F4平台上跑图像识别应用的同时使用了200W像素的摄像头,MCU的有限的资源很难再支撑起来更多的应用了。

    因此如果大家仅仅是为了测试200W摄像头,可以考虑早期的版本。

    但如果是为了学习或者DIY,建议使用30W像素的版本,使用起来相对流畅一些。


    坑四:Openmv的固件:

    Openmv的固件是不断更新的,而且有一些历史版本的固件编译完是错误的,具体的细节一两句说不清楚。

    遇到此类问题的可以加(群:646461928)进行交流或者固件下载。


    坑五:Openmv的硬件:

    Openmv的硬件设计很有讲究,当然也有槽点。

    Openmv的设计在外设选择和资源分配上是有过非常多的考量的~

    他的外设选择:稳,准,狠! 他的资源分配恰到好处!

    1,我们在早期设计的时候尝试更换过摄像头之类的外设,结果当然是放弃了。因为最后的实际识别效果会打折扣!

    所以要自己DIY的小伙伴们建议针对应用选择摄像头,并做大量的环境实验去进行验证,不然会有坑。

    2,其次是PCB layout,这里面也有坑,设计不好的会出现漏光的情况,在一些环境中使用会出现光斑!

    以上两点算是给自己DIY的小伙伴们的一个小建议,希望你们能少掉一些坑。

    但槽点也要说一下:

    1,stm32f765太贵了  一百多一片。所以如果想借鉴openmv图像识别方法的小伙伴们可以先熟悉之后,

    再进行MCU的更换,做好固件移植,从而降低成本(这才是降低成本的王道!而不是牺牲性能!)

    2,小的SD卡套太坑了。。。玩的过程中出现过固定不到位的情况。

    然后我们有一个小伙伴不幸掰断了一个SD卡(所以我们改进了SD卡的位置),我只能说,笑死我了!哈哈哈哈。


    坑六:Openmv的IDE:

    当然,这个不算是坑!只是我的个人想法。

    Openmv的IDE早期是完全免费的,当然老版本的IDE现在也是免费的。

    新版本的IDE就不是这样了,会提示大家购买lisence(lisence只对IDE有影响,其他的方面完全不影响使用)。

    当然,这种做法无可厚非,我自己也有很深的体会,开源的东西没有一个持续的支持,要做下去是非常非常难的这里我要对坚持在开源道路上的前辈表示敬意!)。

    当然也有办法不需要lisence可以使用IDE。

    不过建议不差钱的入坑小伙伴们可以去官方购买一个lisence支持一下!

    我也希望我和我的小伙伴们可以一直坚持的走下去!当然也是离不开大家的支持滴!哈哈哈~



    以上我是遇到的一些印象比较深的小坑,希望能帮助大家在入门openmv的路上少走一些弯路。

    以上文章为物致DIY——皈依原创,需要使用或者转载的小伙伴们请注明出处,谢谢!


    展开全文
  • OpenMV 机器视觉模块 简介

    万次阅读 多人点赞 2016-10-18 16:42:02
    OpenMV是基于STM32处理的机器视觉模块,集成了OV7725摄像头芯片和镜头。用C语言实现了核心的机器视觉算法,提供Python编程接口。发明家、爱好者以及智能设备开发商可以用Python语言使用OpenMV提供的机器视觉功能,为...
                                             OpenMV 机器视觉模块 简介

                                                                     【MicroVision Device原创】


                                                                    OpenMV Module

            OpenMV是一个开源,低成本,功能强大的机器视觉模块。以STM32F427CPU为核心,集成了OV7725摄像头芯片,在小巧的硬件模块上,用C语言高效地实现了核心机器视觉算法,提供Python编程接口。使用者们(包括发明家、爱好者以及智能设备开发商)可以用Python语言使用OpenMV提供的机器视觉功能,为自己的产品和发明增加有特色的竞争力。 【MicroVision Device原创】


                                                                                   Micro Vision Device


            OpenMV上的机器视觉算法包括寻找色块、人脸检测、眼球跟踪、边缘检测、标志跟踪等。可以用来实现非法入侵检测、产品的残次品筛选、跟踪固定的标记物等。使用者仅需要写一些简单的Python代码,即可轻松的完成各种机器视觉相关的任务。小巧的设计,使得OpenMV可以用到很多创意的产品上。比如,可以给自己的机器人提供周边环境感知能力;给智能车增加视觉巡线功能;给智能玩具增加识别人脸功能,提高产品趣味性等;甚至,可以给工厂产品线增加残次品筛选功能等。【MicroVision Device原创】


            OpenMV采用的STM32F427拥有丰富的硬件资源,引出UARTI2CSPIPWMADCDAC以及GPIO等接口方便扩展外围功能。USB接口用于连接电脑上的集成开发环境OpenMVIDE,协助完成编程、调试和更新固件等工作。TF卡槽支持大容量的TF卡,可以用于存放程序和保存照片等。【MicroVision Device原创】

                                                                               OpenMV

            OpenMV的定位是“带机器视觉功能的“Arduino”。它可以通过UARTI2CSPIAsyncSerial以及GPIO等控制其他的硬件,甚至是单片机模块,如ArduinoRaspberryPi(树莓派)等。它也可以被其他的单片机模块控制。这个特点使得它可以很灵活的和其他流行的模块配合,实现复杂的产品功能。【MicroVision Device原创】


    总结一下,关于OpenMV:

    • 一个小巧的机器视觉模块

    • 目标是做“带机器视觉功能的“Arduino”

    • 适合做机器人,智能车,以及其他机器视觉应用

    • 软件和硬件完全开源

    • STM32F4系列单片机,高效、低功耗

    • OV7725摄像头芯片

    • C语言高效地实现了核心机器视觉算法

    • 提供Python编程接口,不需要C语言知识,便于开发

    • 提供大量的Python例子,演示如何使用板上提供的机器视觉算法

    • 提供大量的Python例子,演示pwmuartspii2cgpio等接口的使用

    • 提供集成开发环境(OpenMVIDE),方便开发、调试代码以及更新固件

    • 由于开放源代码,使用者可以自己改进和增加机器视觉算法


            一句话,OpenMV提供了机器视觉功能最核心和最复杂的部分(包括硬件和核心算法),使用者们可以把自己的精力放在自己的想法和产品设计上,实现自己的各种创意。


    MicroVision Device原创】


    =================================================

    图片来自OpenMV官网https://openmv.io/

    转载请注明 【MicroVision Device原创】,谢谢!

    欢迎联系 MicroVision Device <mvdevice@outlook.com>,我们提供嵌入式机器视觉软件和硬件设计




    展开全文
  • OPENMV和STM32通信

    千次阅读 2020-07-04 00:38:28
    OPENMV端 import sensor, image, time, math from pyb import UART uart = UART(3,38400) sensor.reset() sensor.set_pixformat(sensor.GRAYSCALE) sensor.set_framesize(sensor.VGA) sensor.set_windowing((640, 50...
    • 咳咳,我是小白一个,写博客作为学习记录,加深印象,可能写的不对,或者有些地方写的不全,欢迎在下评论哈,我会及时更正
    • 传送门:博客汇总帖
    • 正文开始

    OPENMV端

    import sensor, image, time, math
    from pyb import UART
    uart = UART(3,38400)
    sensor.reset()
    sensor.set_pixformat(sensor.GRAYSCALE)
    sensor.set_framesize(sensor.VGA)
    sensor.set_windowing((640, 50))
    sensor.skip_frames(time = 2000)
    sensor.set_auto_gain(False)
    sensor.set_auto_whitebal(False)
    clock = time.clock()
    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)
            long1=code.payload()
            shuai=code.quality()
            print("%d" % shuai)
            FH = bytearray([0xb2,0xb3,int(long1),0xa2,int(shuai)])
            uart.write(FH)
        if not codes:
            print("FPS %f" % clock.fps())
    
    

    STM32端

    u8 data,a,b;
    static u8 step=0;
    void USART2_IRQHandler(void)                	//串口1中断服务程序
    {
    	
    	if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)  //接收中断(接收到的数据必须是0x0d 0x0a结尾)
       	{USART_ClearITPendingBit(USART2,USART_IT_RXNE);//清除中断标志
    			data= USART_ReceiveData(USART2);
    
    			switch (step)
    										{
    											case 0:
    															if(data==0xb2)
    																	step=1;
    															else {step=0;}
    																											break;
    											case 1:
    															if(data==0xb3) 
    																	 step=2;
    															else {step=0;}
    																											break;
    											case 2:
    															a=data;	
    															step=3;
    																											break;
    											case 3:		if(data==0xa2)	
    																		 step=4;
    																else step=0;
    																											break;
    											case 4:		
    															b=data;	
    															step=0;
    																											break;
    										}	 			
    	   }
    			
    } 
    
    
    

    这些代码挺简单的认真看能看懂

    • 注意波特率一致

    • 可以分别调试,先用串口助手调试STM32端看指令是否正确-----再使用openmv打印到串口使用16进制显示看显示是否正常

    • 在串口中不要放显示函数之类的(否则会出现显示第一个正确·,显示第二个错误的问题)

    • OPWNMV的那个代码是识别条形码

    • bytearray是phthon内置函数,大于255的数字拆分然后在STM32端组装起来

    展开全文
  • OpenMv基础

    千次阅读 2020-04-22 23:08:30
    OpenMV是嵌入式图像处理,它帮助轻松的完成机器视觉应用。你可以通过高级语言Python脚本,这里先看一下基础语法。

    前言

    OpenMV是嵌入式图像处理,其摄像头是一款小巧,低功耗,低成本的电路板,它帮助轻松的完成机器视觉(machine vision)应用。

    可以通过高级语言Python脚本(准确的说是 MicroPython ),而不是C/C++。Python的高级数据结构使你很容易在机器视觉算法中处理复杂的输出。但是,你仍然可以完全控制OpenMV,包括IO引脚。

    可以很容易的使用外部终端触发拍摄或者或者执行算法,也可以把算法的结果用来控制IO引脚。

    简单的来说,OpenMV是一个可编程的摄像头,通过MicroPython语言,可以实现逻辑。而且摄像头本身内置了一些图像处理算法,很容易使用。那么后期就可以使用OpenMV做一些计算机机器视觉的好玩项目了。

    星瞳科技是OpenMV中国官方代理,还做了好多中文视频,特别适合我这种小白。bilibili观看地址:https://space.bilibili.com/22215525/#/

    色块监测 例子如下,也太贴心了,每行都有注释。

    # 色块监测 例子
    #
    # 这个例子展示了如何通过find_blobs()函数来查找图像中的色块
    # 这个例子查找的颜色是深绿色
    
    import sensor, image, time
    
    # 颜色追踪的例子,一定要控制环境的光,保持光线是稳定的。
    green_threshold   = (   0,   80,  -70,   -10,   -0,   30)
    #设置绿色的阈值,括号里面的数值分别是L A B 的最大值和最小值(minL, maxL, minA,
    # maxA, minB, maxB),LAB的值在图像左侧三个坐标图中选取。如果是灰度图,则只需
    #设置(min, max)两个数字即可。
    
    sensor.reset() # 初始化摄像头
    sensor.set_pixformat(sensor.RGB565) # 格式为 RGB565.
    sensor.set_framesize(sensor.QQVGA) # 使用 QQVGA 速度快一些
    sensor.skip_frames(time = 2000) # 跳过2000s,使新设置生效,并自动调节白平衡
    sensor.set_auto_gain(False) # 关闭自动自动增益。默认开启的,在颜色识别中,一定要关闭白平衡。
    sensor.set_auto_whitebal(False)
    #关闭白平衡。白平衡是默认开启的,在颜色识别中,一定要关闭白平衡。
    clock = time.clock() # 追踪帧率
    
    while(True):
        clock.tick() # Track elapsed milliseconds between snapshots().
        img = sensor.snapshot() # 从感光芯片获得一张图像
    
        blobs = img.find_blobs([green_threshold])
        #find_blobs(thresholds, invert=False, roi=Auto),thresholds为颜色阈值,
        #是一个元组,需要用括号[ ]括起来。invert=1,反转颜色阈值,invert=False默认
        #不反转。roi设置颜色识别的视野区域,roi是一个元组, roi = (x, y, w, h),代表
        #从左上顶点(x,y)开始的宽为w高为h的矩形区域,roi不设置的话默认为整个图像视野。
        #这个函数返回一个列表,[0]代表识别到的目标颜色区域左上顶点的x坐标,[1]代表
        #左上顶点y坐标,[2]代表目标区域的宽,[3]代表目标区域的高,[4]代表目标
        #区域像素点的个数,[5]代表目标区域的中心点x坐标,[6]代表目标区域中心点y坐标,
        #[7]代表目标颜色区域的旋转角度(是弧度值,浮点型,列表其他元素是整型),
        #[8]代表与此目标区域交叉的目标个数,[9]代表颜色的编号(它可以用来分辨这个
        #区域是用哪个颜色阈值threshold识别出来的)。
        if blobs:
        #如果找到了目标颜色
            for b in blobs:
            #迭代找到的目标颜色区域
                # Draw a rect around the blob.
                img.draw_rectangle(b[0:4]) # rect
                #用矩形标记出目标颜色区域
                img.draw_cross(b[5], b[6]) # cx, cy
                #在目标颜色区域的中心画十字形标记
    
        print(clock.fps()) # 注意: 你的OpenMV连到电脑后帧率大概为原来的一半
        #如果断开电脑,帧率会增加
    

    电源

    OpenMV有两个电源输入端:VIN(有时也会标识为VCC)和USB输入。

    VIN输入为3.6V~5V,推荐5V。
    USB和VIN可以同时供电。

    OpenMV有一个电源输出端:3.3V,这个电压是OpenMV的稳压器输出的,用于给其他传感器供电。

    注意:不要给3.3V直接供电,没有内部芯片的保护,很容易烧毁。
    在这里插入图片描述

    SD卡

    如果代码太多,flash装不下,就可以使用SD卡,这个是OpenMv自带的,SD卡也是一个文件系统,当上电的时候,如果插入SD卡,那么SD卡的文件系统就会自动取代内置的Flash文件系统,每次上电,就会运行SD卡中的main.py。SD卡最大支持32G的容量。

    图像处理背景

    感光元件

    从物理学和数学我们都接触过小孔成像,这是一种理想的相机模型,图像透过镜头,照在一个感光芯片上,感光芯片可以把光照的波长和强度等信息转成计算机(数字电路)可以识别的数字信号。
    感光元件如下,摄像头用螺丝固定在感光元件正上方就好,如果感光元件上面有灰尘什么的就用棉签擦一下。
    在这里插入图片描述

    像素

    感光元件是有很多个感光点构成的,比如有640*480个点,每个点就是一个像素。

    分辨率

    把每个点的像素收集整理起来,就是一副图片,那么这张图片的分辨率就是640*480。

    帧率

    每秒钟处理的图片数量。

    颜色

    不同波长的电磁波。

    LAB亮度-对比度

    这个是在查找指定颜色模块时要用的,a的正数代表红色,负端代表绿色;b的正数代表黄色,负端代表蓝色。

    Python

    这个是此板块必学的,这里再回顾一下常用语法吧,把自己不熟练的地方也总结了一下。

    使用好处

    OpenMV可以使用Python来进行二次开发。有几个好处:
    1.上手简单。
    2.不用考虑内存的申请和释放。
    3.有很多MicroPython库可以直接用(并不兼容PC上的Python模块)。
    4.开发团队开发了OpenMV的各种算法和模块可供调用。

    REPL和串口

    OpenMV的IDE自带一个串口助手,用于连接OpenMV,也可以连接其他的串口,比如Arduino,pyboard,esp8266。这个串口可以直接从IDE到达,然后就可以到达终端了。

    从这里进入
    在这里插入图片描述
    选择连接serial port
    在这里插入图片描述
    到达终端
    在这里插入图片描述

    语法

    print()函数

    print()函数也可以接受多个字符串,用逗号“,”隔开,就可以连成一串输出,但是print()会依次打印每个字符串,遇到逗号“,”会输出一个空格。
    print()可以打印整数,也可以直接计算结果。

      print(100 + 200)
    

    或者

       print('100 + 200 =', 100 + 200)
    

    输出

    100 + 200 = 300
    

    其中的’100 + 200 ='是字符串而非数学公式,是Python解释器自动计算出的。

    变量

    如下,就是将静态语言赋值给动态语言

    a = 'ABC' # a变为字符串
    

    注:静态语言在定义变量时必须指定变量类型

    list列表

    list是一种数据结构,一种有序的集合,可以随时添加和删除其中的元素。

    1.获取元素个数

    以下的变量classmates就是一个list。用len()函数可以获得list元素的个数为三,那如果一个list中一个元素也没有,就是一个空的list,它的长度为0。

    classmates = ['Michael', 'Bob', 'Tracy']
    len(classmates)
    

    2.索引访问

    可以用索引来访问list中每一个位置的元素,但是要记得索引是从0开始的,要确保索引不要越界。
    索引还可以倒着写,比如最后一个元素:classmates[-1],以此类推。那classmates[-2]就是倒数第二个元素。

    3.插入

    把元素插入到指定的位置

    classmates.insert(1, 'Jack')
    

    4.删除

    删除list末尾的元素

    classmates.pop()
    

    5.替换

    classmates[1] = 'Sarah'
    

    6.数据类型

    list里面的元素的数据类型也可以不同的哦。

    tuple元组

    这也是一种有序列表。

    注:tuple一旦初始化就不能修改,就是不能赋值,替换什么的了。

    也就是说,当定义一个tuple的时候,tuple的元素就必须被确定下来。如果只有1个元素的tuple定义时必须加一个逗号,,来消除是数学意义上小括号的歧义。

    t = (1,)
    

    条件判断

    这里有用到elif,直接进行下一个条件判断,并且不用加分号。
    切记加冒号
    if语句的完整形式是:

    if <条件判断1>:
        <执行1>
    elif <条件判断2>:
        <执行2>
    elif <条件判断3>:
        <执行3>
    else:
        <执行4>
    

    循环

    1.for x in 循环

    就是把每个元素代入变量x,然后执行缩进块的语句。
    range(101)就可以生成0-100的整数序列,计算如下:

    sum = 0
    for x in range(101):
        sum = sum + x
    print(sum)
    

    2.while循环

    这个是C语言里面也接触过的,但是这里运用可以不加分号。

    数据类型转换

    比如int()函数可以把其他数据类型转换为整数,float-小数(浮点数),double-极大或极小的浮点数,char-字符型。

    定义函数

    def power(x):#函数名,参数
        return x * x#一定要缩进,函数体
    

    注:定义的函数体一定要缩进

    在power(x)函数中,参数x就是一个位置参数。若像power(x, n)函数有两个参数:x和n,这两个参数都是位置参数,调用函数时,传入的两个值按照位置顺序依次赋给参数x和n。

    切片

    如L[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3。即索引0,1,2,正好是3个元素。如果第一个索引是0,还可以省略:L[:3]。

    注:tuple和list切片后数据类型不变。

    'ABCDEFG'[:3]
    'ABC'#还是字符不变
    
    展开全文
  • OpenMV学习(一)IDE安装与简介

    万次阅读 2018-11-20 10:29:16
    OpenMV是基于Python的嵌入式机器视觉模块,目标是成为机器视觉界的“Arduino”。它成本低易拓展,开发环境友好,除了用于图像处理外,还可以用Python调用其硬件资源,进行I/O控制,与现实世界进行交互。 购买了一块...
  • OpenMV&&stm32通信

    千次阅读 多人点赞 2020-02-19 01:53:17
    OpenMV&&stm32通信 目录: 1.开篇之言 2.简单介绍 3.主要代码 4.结篇之语 ------------------------------------------------------------------------------------------- 1.开篇之言 (不用看这,都是废话...
  • 使用openMV3与stm32进行通讯

    万次阅读 多人点赞 2019-04-22 14:50:42
    使用openMV3与stm32进行通讯 想用openMV与stm32通讯,在网上找了一大圈,最后决定使用串口 可以找到openMV的引脚资源图如下: 这里使用P4(USART3_TX)与P5(USART3_RX)脚与stm32的USART1交叉联接。 openMV的代码如下...
  • 总的思路是以openmv 接收蓝牙的指令,如果是自动选项,就在openmv 运行识别红球进行固定距离跟踪的程序;如果是手动选项,openmv就直接把所得到的数据传给STM32,不做其它处理。那这里就需要做两件事情,一个是要...
  • OpenMV 简介

    万次阅读 多人点赞 2017-07-29 20:27:37
    OpenMV是一个开源,低成本,功能强大的机器视觉模块。以STM32F767CPU为核心,集成了OV7725摄像头芯片,在小巧的硬件模块上,用C语言高效地实现了核心机器视觉算法,提供Python编程接口。使用者们(包括发明家、爱好...
  • OPENMV 开源项目简介

    万次阅读 多人点赞 2018-07-02 15:53:13
    一、OPENMV简介 OpenMV项目旨在创建低成本,可扩展的,基于Python的机器视觉模块,并旨在成为“ 机器视觉的Arduino ”。其目标是让机器视觉算法更接近制造商和业余爱好者,OpenMV集成诸多困难且耗时的视觉算法,...
  • openmv学习

    千次阅读 2017-10-24 11:11:21
    (一)openmv介绍 描述 OpenMV摄像头是一款小巧,低功耗,低成本的电路板,它帮助你很轻松的完成机器视觉(machine vision)应用。你可以通过高级语言Python脚本(准确的说是 MicroPython ),而不是C/C++。...
  • OpenMV H7也就是OpenMV4来啦 最新

    万次阅读 2019-01-10 20:09:08
    17年开始做过了四个版本的openmv 可谓是电赛好帮手 开发了两年的openmv,我的目的就是让openmv变得便宜 目前官方的第四代openmv还在众筹中:...
  • OpenMV-IDE 免KEY提示 编译教程

    万次阅读 2018-09-04 08:49:31
    很多人在购买了OpenMV之后都没有购买key,虽然key作为一种捐赠开发者的形式存在,但大多数人都是不愿意每次使用都看到那三个提示框的,而且不愿意去购买key,附上我的编译教程: 第一步:从github上下载openmv-ide...
  • OpenMv入手软件驱动安装

    万次阅读 2017-03-15 23:48:11
    1、软件下载 拿到 openmv,首先去官网下载 openmv IDE(https://openmv.io/pages/download),里面有Windows,...首先,将OpenMv和电脑连接,openmv自检,绿灯闪烁。通常会出现下面的现象: 一般能够自动安装完成,偶尔
  • OpenMV使用初步

    千次阅读 2017-11-30 22:11:31
    从官方下载OpenMV IDE并安装后,编辑框中的内容就是Python代码,通过编写并调用函数执行命令,点击连接后运行即可在线仿真 MicroPython为OpenMV构建了文件系统,建立文件夹和文件以树形结构排列,状如U盘,在代码中...
  • 注意的地方是openmv3 P7-9是pwm口, angle(参数),参数是绝对角度。 # Servo Control Example # # This example shows how to use your OpenMV Cam to control servos. import time from pyb import Servo s1 =...
  • OpenMV IDE使用教程

    万次阅读 2019-05-12 10:47:23
    代码编辑区编辑对应的openmv的python代码,注意OpenMVIDE一次只能编辑单个文件。如果是多个文件的话,可以通过读卡器存入SD卡中。 样例Examples openmv各个模块的使用样例。 串口连接 代码执行 连接串口,点击运行...
  • ARDUINO + openmv 颜色 识别 工程训练大赛

    千次阅读 热门讨论 2019-01-24 15:12:58
    停车 识别三种颜色 通过串口 发送给arduino 进行处理。...利用的是色块的横坐标 大小比较 从而将三种颜色 排列组合 到达排序效果 针对工程训练大赛 openmv 颜色识别 共享此代码 欢迎学习 欢迎留言 ...
  • openmv 发送16进制数

    千次阅读 2018-06-18 17:46:25
    openmv发送16进制数据需要转换为字节的形式,假设要发送 0x80,0x06,0x02,0x78这几个16进制数据代码如下:uart = UART(3, 9600) #波特率9600uart.init(9600, bits=8, parity=None, stop=1)data=bytearray([0x80,0x06,...
  • 史上最便宜的OpenMV 2 OpenMV3

    千次阅读 2017-11-15 22:32:29
    史上最便宜的OpenMV 2 OpenMV3开始啦 本人是在今年电子设计大赛才开始接触到了OpenMV的,是学校买的一家上海公司的飞控板和视觉系统,刚开始还觉得多牛逼,其实就是用的开源项目OpenMV。 入手这个东西之后呢就觉得...
1 2 3 4 5 ... 20
收藏数 2,323
精华内容 929
关键字:

openmv