导航

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

    grnm 发布的帖子

    • 在使用snapshot(copy_to_fb=False)时,IDE缓冲区还是能看到图像,这是为啥?
      import time, sensor, image
      from image import SEARCH_EX, SEARCH_DS
      
      
      sensor.reset()
      
      
      sensor.set_contrast(1)
      sensor.set_gainceiling(16)
      
      sensor.set_framesize(sensor.VGA)
      
      sensor.set_pixformat(sensor.GRAYSCALE)
      
      
      clock = time.clock()
      
      
      while (True):
          clock.tick()
          img = sensor.snapshot(copy_to_fb=False)
          print(clock.fps())
      
      发布在 OpenMV Cam
      grnm
    • 怎么通过串口发送一张图片?

      怎么通过串口发送图片?

      发布在 OpenMV Cam
      grnm
    • RE: 如何判断一张图片里有几个条形码?

      能判断图像里有几种条形码么?

      发布在 OpenMV Cam
      grnm
    • RE: if uart.any():是在中断里执行么?

      import sensor, image, time, math
      from pyb import Pin,Timer,UART

      uart = UART(3, 115200)
      uart.init(115200, bits=8, parity=None, stop=1,read_buf_len=10)

      LED1 = Pin('P9', Pin.OUT_PP, Pin.PULL_NONE)
      LED1.value(True)
      sensor.reset()
      sensor.set_pixformat(sensor.GRAYSCALE) #灰度图
      sensor.set_framesize(sensor.VGA) # 640*480
      sensor.set_windowing((640, 300)) # V Res of 80 == less work (40 for 2X the speed).
      sensor.skip_frames(time = 1000)#延时1s等待设置生效
      sensor.set_auto_gain(False) #关闭自动快门防止图像冲洗
      clock = time.clock()
      LED1.value(False)

      #启用定时器2,频率0.2,发送心跳反馈5s一次
      def tick(timer):
      LED1.value(True)
      #uart.write("STRHBEND")#发送心跳反馈
      #print("心跳STRHBEND")
      time.sleep(1)
      LED1.value(False)
      tim = Timer(2, freq=0.2) # create a timer object using timer 2 - trigger at 1Hz
      tim.callback(tick) # set the callback to our tick function

      #条码类型定义
      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"
      #num=0#扫码计数
      flag=0#串口接收标志位
      uart_data=0#串口数据
      cmd1=b'0'#命令字节1
      cmd2=b'0'#命令字节2

      while(True):
      clock.tick()
      code_data="code_data"#条码相关信息
      #读串口命令
      if uart.any():
      uart_data = uart.read(1).decode()#一个字节一个字节分析,避免命令数据间断问题
      if (flag==0)&(uart_data=="S"):
      flag=1
      elif (flag==1)&(uart_data=="T"):
      flag=2
      elif (flag==2)&(uart_data=="R"):
      flag=3
      elif(flag==3): #接收命令段2字符
      cmd1=uart_data
      flag=4
      elif(flag==4):
      cmd2=uart_data
      flag=5
      elif(flag==5): #接收序号2字符
      num1=uart_data
      flag=6
      elif(flag==6):
      num2=uart_data
      flag=7
      elif(flag==7)&(uart_data=="E"):
      flag=8
      elif(flag==8)&(uart_data=="N"):
      flag=9
      elif(flag==9)&(uart_data=="D"):
      flag=10
      else:flag=0

      #收到STR_ _END 开始读码
      if (flag==10)&(cmd1=="R")&(cmd2=="C") :#READ CODE命令
          flag=0  #接收标志清零
          img = sensor.snapshot()
          codes = img.find_barcodes()
          i = 0#条码个数统计
          for code in codes:
              img.draw_rectangle(code.rect(),color=50,thickness=5)
              print_args = (barcode_name(code), code.payload(), code.quality(), clock.fps(),num1,num2)
              print("条码类型 %s, 码值 \"%s\", 数量 %d, 帧率 %f, 计数 %s%s" % print_args)
                  #print(", 计数%d"%num)#不换行    , end = ''
      
                  #计数值和条码位宽值位2位数,切条码位宽<21,直接发
              if ( len(str(code.payload()))>9 ) & ( len(str(code.payload()))<21 ):
                  #发送STRCV 计数值 条码位宽 条码值 END
                  code_data=("STRCV%s%s%s%sEND"%(num1,num2,len(str(code.payload())), str(code.payload())))
              elif len(str(code.payload())) < 10:#计数补一个字符0,凑足2位
                  #发送STRCV 计数值 "0"条码位宽 条码值 END
                  code_data=("STRCV%s%s0%s%sEND"%(num1,num2,len(str(code.payload())), str(code.payload())))
              i = i+1#条码个数统计
              #LED1.value(False)
              #time.sleep(2)
          #判断有几个码
          if i==1:#只有一个码,直接上传,指示灯闪亮一次
              LED1.value(True)
              uart.write(code_data)
              LED1.value(False)
          else:#没有码或者多个码,报错,发NR
              uart.write("STRNR%s%sEND"%(num1,num2))
              print("没有码, 帧率:%f,计数%s%s" % (clock.fps(),num1,num2 ) )
      
          #flag=0
       #心跳信号
      elif(flag==10)&(cmd1=="H")&(cmd2=="B"):
          uart.write("STRHB%s%sEND"%(num1,num2) )
          flag=0#清除命令接收标志
      发布在 OpenMV Cam
      grnm
    • 如何判断一张图片里有几个条形码?

      img.find_barcodes(),这个函数能识别一张图里有几个条形码么

      发布在 OpenMV Cam
      grnm
    • if uart.any():是在中断里执行么?

      下面这段程序是在中断里执行么
      if uart.any():
      uart_data = uart.read(1).decode()#一个字节一个字节分析,避免命令数据间断问题
      if (flag==0)&(uart_data=="S"):
      flag=1
      elif (flag==1)&(uart_data=="T"):
      flag=2
      elif (flag==2)&(uart_data=="R"):
      flag=3
      elif(flag==3): #接收命令段2字符
      cmd1=uart_data
      flag=4
      elif(flag==4):
      cmd2=uart_data
      flag=5
      elif(flag==5): #接收序号2字符
      num1=uart_data
      flag=6
      elif(flag==6):
      num2=uart_data
      flag=7
      elif(flag==7)&(uart_data=="E"):
      flag=8
      elif(flag==8)&(uart_data=="N"):
      flag=9
      elif(flag==9)&(uart_data=="D"):
      flag=10
      else:flag=0

      发布在 OpenMV Cam
      grnm
    • IDE的帧缓冲区图像滞后是怎么回事?

      0_1618533213759_ae713a32-b914-4f59-bebe-0b3feec99394-image.png

      我写的条码识别程序,串行终端已经收到码值了,但是帧缓冲区图像没有刷新过来,还是上一帧图像咋回事?

      发布在 OpenMV Cam
      grnm
    • pyb.uart和machine.uart有啥区别?

      pyb.uart和machine.uart有啥区别?
      from pyb import uart 和from machine import uart有啥区别

      发布在 OpenMV Cam
      grnm
    • 串口接受的字节串,怎么取其中的一个字节?

      串口接受的字节串,怎么取其中的一个字节?代码怎么写?

      发布在 OpenMV Cam
      grnm
    • openmv4plus识别圆的定位精度是多少?

      openmv4plus识别圆的定位精度是多少?如果拍照时候有角度偏差,导致拍出来的是椭圆,这样对定位精度有什么影响?

      发布在 OpenMV Cam
      grnm
    • 某个roi区域内的二维码识别不出来?

      for code in img.find_datamatrices(roi=(55,46,63,65), effort = 200):
      当二维码在图像边缘的时候用这个函数,设置roi参数,识别不出二维码,

      但是用
      sensor.set_windowing((55,46,63, 65))
      for code in img.find_datamatrices( effort = 200):
      就可以识别到了,这是怎么回事?

      发布在 OpenMV Cam
      grnm
    • RE: 程序运行一半出现以下问题:

      意思是我识别的的码值不是数字,不能强制转换成数字是吧

      发布在 OpenMV Cam
      grnm
    • 程序运行一半出现以下问题:

      我的程序运行一半,突然崩了,是咋回事,代码如下:

      #小车扫码测试3
      #拍一张图先找圆,将其中某个区域复制出来,识别二维码
      # 2021-1-25  -AGV小车测试扫码
      #识别圆和二维码--2.3MM镜头,先识别圆的位置,截取小块图像,再找二维码,解决二维码在图像边缘无法识别问题
      #发送数据格式:2byte帧头,1byte帧序号,1byte帧耗时,4byte码值,2byte左右偏移,2byte上下偏移,2byte角度,1byte校验和,共15byte
      import sensor, image, time, math
      from pyb import UART
      uart = UART(3, 19200)
      uart.init(19200, bits=8, parity=None, stop=1)
      sensor.reset()
      sensor.set_pixformat(sensor.GRAYSCALE)
      sensor.set_framesize(sensor.QVGA) # can be QVGA on M7...
      sensor.skip_frames(30)
      sensor.set_auto_gain(False) # must turn this off to prevent image washout...
      clock = time.clock()
      
      while(True):
      
          #sensor.set_windowing((0,0,320, 240))
          #sensor.skip_frames(time=1)
          img = sensor.snapshot()
          clock.tick() #必须放在img = sensor.snapshot()下面
      
          for c in img.find_circles(threshold = 8000, x_margin = 10, y_margin = 10, r_margin = 10,
              r_min = 37, r_max = 41, r_step = 1):
              img.draw_circle(c.x(), c.y(), c.r(), color = (200))#找到的圆画出来
              print(c)
              img.draw_cross(160, 120, color = (250), size = 160, thickness = 1)#中心画个十字架
      
          img2 = img.copy((c.x()-c.r(),c.y()-c.r(),2*c.r(),2*c.r()),1,1,copy_to_fb=False)
          matrices = img2.find_datamatrices(effort = 500)
          print(matrices)
          for code in matrices:
              data=bytearray([0xaa,0x4d,0,0,#帧头
              int(code.payload()),int(code.payload())>>8,int(code.payload())>>16,int(code.payload())>>24,#])  #格式正确
              int(c.x()-160),int(c.x()-160)>>8,int(c.y()-120),int(c.y()-120)>>8,#])#,  #xy偏移量,可以发送
              #int(100*(int(180*code.rotation())/math.pi-180)%36000),int(100*(int(180*code.rotation())/math.pi-180)%36000)>>8])#       #角度,可发送
              int(100*((int(180*code.rotation())/math.pi-180)%360)),int(100*((int(180*code.rotation())/math.pi-180)%360))>>8])#
      
              num=bytearray([ data[(0)]+data[(1)]+data[(2)]+data[(3)]+data[(4)]+data[(5)]+data[(6)]+data[(7)]+data[(8)]+data[(9)]
                  +data[(10)]+data[(11)]+data[(12)]+data[(13)]   ])#data校验和
              uart.write(data)
              uart.write(num)
          #if not matrices:
          print("FPS %f" % clock.fps())
      

      报错如下:Traceback (most recent call last):
      File "", line 35, in
      ValueError: invalid syntax for integer with base 10
      MicroPython v1.12-omv-r1 OpenMV v3.6.9 2020-10-12; OPENMV4P-STM32H743
      Type "help()" for more information.

      发布在 OpenMV Cam
      grnm
    • 怎么把拍下来的图片截取其中的一部分保存下来?

      怎么把拍下来的图片截取其中的一部分保存下来?比如说我拍了一张图片,发现其中有个特征是我想要的,我想把特征部分截取下来保存,怎么用代码实现?

      发布在 OpenMV Cam
      grnm
    • 浮点数怎么转换成整数?

      如何把一个浮点数强制转换成整数,然后用串口发送出去?代码怎么写

      发布在 OpenMV Cam
      grnm
    • 在图像边缘区域识别DM二维码的问题

      for code in img.find_datamatrices((55,46,63,65), effort = 200):
      当二维码在图像边缘的时候用这个函数,设置roi参数,识别不出二维码,
      但是用
      sensor.set_windowing((55,46,63, 65))
      for code in img.find_datamatrices( effort = 200):
      就可以识别到了,这是为什么啊,这两种方法的区别是什么

      发布在 OpenMV Cam
      grnm
    • RE: 找DM二维码只能识别图像中间区域的二维码,当把二维码移到图像边缘就识别不到了怎么回事?

      @kidswong999 0_1611020457934_6d1ff4ea-edf1-42e9-9e50-d3b783a04886-image.png 我已经把effort设置成5000了,还是不行呀,1000也试过都不行,而且还把搜索区域roi调的很小了,还是不行啊

      发布在 OpenMV Cam
      grnm
    • RE: 找DM二维码只能识别图像中间区域的二维码,当把二维码移到图像边缘就识别不到了怎么回事?

      我用的无畸变镜头,第一张图把二维码放图片中间可以识别,0_1610675012201_7f8602d1-f3d2-4638-8749-7f2801d59e68-image.png
      第二张图把二维码放图像边缘就识别不了0_1610675101530_0aecde04-b81f-499e-ae28-aec6ac3f40ca-image.png

      发布在 OpenMV Cam
      grnm
    • 找DM二维码只能识别图像中间区域的二维码,当把二维码移到图像边缘就识别不到了怎么回事?
      import sensor, image, time
      
      sensor.reset()
      sensor.set_pixformat(sensor.GRAYSCALE)
      sensor.set_framesize(sensor.QVGA) # can be QVGA on M7...
      sensor.skip_frames(30)
      sensor.set_auto_gain(False) # must turn this off to prevent image washout...
      clock = time.clock()
      while(True):
      
      
      
          img = sensor.snapshot()#.lens_corr(0.47)
          clock.tick() #必须放在img = sensor.snapshot()下面
          for code in img.find_datamatrices( effort = 200):#effort越大帧率越低,上限240,越小帧率越高下限160
              print(code)
              print("FPS %f" % clock.fps())
      
      发布在 OpenMV Cam
      grnm