导航

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

    c3mg

    @c3mg

    0
    声望
    10
    楼层
    351
    资料浏览
    0
    粉丝
    0
    关注
    注册时间 最后登录

    c3mg 关注

    c3mg 发布的帖子

    • RE: 为什么openmv串口接收大量数据时会报错?

      0_1679385878525_联想截图_20230321160026.png

      发布在 OpenMV Cam
      C
      c3mg
    • RE: 为什么openmv串口接收大量数据时会报错?

      代码比较多,这里放最关键的一个函数。这个函数是让32发送一个JPEG图片的数据包到OPENMV,这个函数得到的参数Imagelen是JPEG图片数据流的字节数,times是我根据每次读40个字节,计算出来总共要读的次数。当32发送320240图片,字节数大概在5000左右,如果波特率是9600或者19200,OPENMV可以收到,如果波特率增大,或者发送的图片变成640480,图中while函数里面的for i in range(0, len(re_data)): 就会报错,说我的re_data没有长度,请问这是什么原因?

      发布在 OpenMV Cam
      C
      c3mg
    • 为什么openmv串口接收大量数据时会报错?
      uart = UART(1, 38400, timeout_char=1000)
      uart.init(38400, bits=8, parity=None, stop=1, timeout_char=1000)
      clock = time.clock()
      
      def getImagefrom32(Imagelen,times):
          count = 0
          print("This is getImagefrom32")
          Imagedata=''
          sendimage=[0x73,0x65,0x6E,0x64,0x69,0x6D,0x61,0x67,0x65,0x0d,0x0a]
          uart.write(bytearray(sendimage))
          time.sleep_ms(20)
          while(True):
              if uart.any():
                  for i in range(times):
                      if (i+1) !=times:
                          re_data=uart.read(40)
                          for i in range(0, len(re_data)):  
                              Imagedata = Imagedata + (hex(int(re_data[i]))).upper()[2:]
                          count = count+1
                          print("count= ",count,"len of Imagedata= ",len(Imagedata)/2)
                      else :
                          number = Imagelen-40*i
                          re_data=uart.read(number)
                          for i in range(0, len(re_data)):  
                              Imagedata = Imagedata + (hex(int(re_data[i]))).upper()[2:]
                          count = count+1
                          print("count= ",count)
                  break
      
          print("len of Imagedata: ",len(Imagedata))
      ![0_1679385633651_联想截图_20230321160026.png](https://fcdn.singtown.com/dddaefcf-90d9-4f94-b529-3e539446c636.png) 
      
      代码比较多,这里放最关键的一个函数。这个函数是让32发送一个JPEG图片的数据包到OPENMV,这个函数得到的参数Imagelen是JPEG图片数据流的字节数,times是我根据每次读40个字节,计算出来总共要读的次数。当32发送320*240图片,字节数大概在5000左右,如果波特率是9600或者19200,OPENMV可以收到,如果波特率增大,或者发送的图片变成640*480,图中while函数里面的for i in range(0, len(re_data)):  就会报错,说我的re_data没有长度,请问这是什么原因?
      
      发布在 OpenMV Cam
      C
      c3mg
    • 请问openmv串口收到数据只要不读,数据还会一直在哪里吗,直到我去读它

      我串口先发送一个命令,对方会回数据,收到的数据会一直在缓存区里,直到我if uart.any,是这样吗

      发布在 OpenMV Cam
      C
      c3mg
    • RE: 为什么lepton热成像模块接上去电脑不识别OPENMV了?

      @kidswong999 板子的生产者说是根据openmv官方在github上开源的资料生产的,他自己也是openmv的贡献者,我的lepton也是在星瞳官方店买的。在我是openmv4 plus,摄像头位置不放或者放plus自带的摄像头USB插上电脑时可以识别到32M的空间,板子的led灯会闪烁,但是插着lepton就没任何反应,会不会是lepton内部电路短路了,自动保护了之类的问题

      发布在 OpenMV Cam
      C
      c3mg
    • RE: 为什么lepton热成像模块接上去电脑不识别OPENMV了?

      @kidswong999 我的这个OPENMV好像是从另外的店买的,根据GITHUB上面的开源资料生产的,是否是这个原因呢

      发布在 OpenMV Cam
      C
      c3mg
    • 为什么lepton热成像模块接上去电脑不识别OPENMV了?

      感觉没有上电。。我换成可见光摄像头后又可以正常识别了?难道lepton要5V供电吗

      发布在 OpenMV Cam
      C
      c3mg
    • 为什么OPENMV用串口接收图片数据会丢一部分?

      串口使用的是uart = UART(1,38400)下面是接收数据的关键函数

      def getImage(getimage,len1,len2):
          length = len1+len2+10
          if (length%40)!=0:
              times=int(length/40)+1;
          else:
              times=int(length/40)
          print("this is length,",length)
          uart.write(bytes(getimage))
          time.sleep_ms(100)
          Imagedata=bytes([])
      
          for i in range(times):
              if uart.any():
                  if (i+1) !=times:
                      re_data=uart.read(40)
                      Imagedata += re_data
                      time.sleep_ms(10)
                  else :
                      number = length-40*i
                      re_data=uart.read(number)
                      Imagedata += re_data
                      time.sleep_ms(10)            
          count=0
          lenImageData=len(Imagedata)
          print("This is len Imagedata before:",lenImageData)
          for i in Imagedata:
              print(i,end=" ")
              count+=1
              if count>0 and (count%40==0):
                  print("\n")
          print("\n\n")
          print("This is len Imagedata before:",len(Imagedata))
          Imagedata = Imagedata[5:]
          lenImageData=len(Imagedata)
          lenImageData-=5
          Imagedata = Imagedata[:lenImageData]
          print("This is len Imagedata after:",len(Imagedata))
          for i in Imagedata:
              print(i,end=" ")
              count+=1
              if count>0 and (count%40==0):
                  print("\n")
          return Imagedata
      

      下面是print打印出来的几个关键信息:
      This is len1 and len2: 19 3
      this is length, 4877
      This is len Imagedata before: 4631
      This is len Imagedata after: 4621

      在上面的打印信息中,4877为我应该接受到的数据字节数,为JPEG图片经压缩后的数据流的长度,我前期测试发现如果用if uart.any():re_data=uart.readline()一次只能读47个字节,所以我设置每次读40个字节,同时可以通过我应该接收到的字节数算出我要读几次。我通过打印接收到的数据,可以判断出头和尾固定的数据字节是对的,但是会造成中间有数据丢失,同时我在使用for循环接收数据时,每次还必须进行5-10ms的延时,不然字节丢失会更严重,请问是为什么?

      发布在 OpenMV Cam
      C
      c3mg
    • openmv得到JPEG图片的数据包后可以生成图片吗?

      用串口摄像头发送十六进制的数据,在电脑python上面可以用以下代码将JPEG图片的数据包生成图片:
      picture_bytes = binascii.unhexlify(test_hex) 将十六进制转换为二进制

      picture_stream = io.BytesIO(picture_bytes)

      image = Image.open(picture_stream)
      最后一行用了PIL的Image库,请问openmv有这种功能吗
      如果没有的话,openmv写数据生成.JPEG图片是要重启后才能在磁盘里面看到图片嘛?

      发布在 OpenMV Cam
      C
      c3mg
    • 有没有大佬试过开发lepton3.5的板子接到openmv的P0到P5口上

      请问有没有大佬试过自己弄一块lepton3.5的板子接到openmv板子上的P0到P5接口,这样的话就可以可见光和红外摄像头一起使用了。但似乎驱动程序得自己写?

      发布在 OpenMV Cam
      C
      c3mg