导航

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

    tg3m 发布的帖子

    • 识别圆心坐标不准确
      # Untitled - By: xrj - 周一 8月 6 2018
      
      import sensor, image, time,pyb
      
      sensor.reset()
      sensor.set_pixformat(sensor.GRAYSCALE)
      sensor.set_framesize(sensor.QVGA)
      sensor.set_windowing((310,240))
      sensor.skip_frames(time = 2000)
      
      clock = time.clock()
      while(True):
          clock.tick()
          img = sensor.snapshot()
          high_threshold = (160, 255)                        #二值化范围
          img.gaussian(1)                                    #模糊滤波
          img.binary([high_threshold])                       #二值化
          img.erode(3)
          for c in img.find_circles(threshold = 25000, x_margin = 10, y_margin = 10, r_margin = 70,r_min = 70, r_max =100, r_step = 2):
           img.draw_circle(c.x(), c.y(), c.r(), color = (255, 0, 0))
      
      
      

      0_1533623232191_圆心.png
      可以看到图中运行结果里圆与实际希望的圆有一段差距,这个可以修正吗

      发布在 OpenMV Cam
      T
      tg3m
    • RE: 改变window 会导致图像滤波失效?

      @kidswong999 改了顺序也是这样,显示的只有原图,处理都是一闪而过0_1533545190036_QQ截图20180806164620.png
      其实我想做的就是能够把图像中的圆所在的小部分roi提取出来然后,对这提取出来的部分做处理,因为我做的是圆的处理,所以是想用logpolar变换来实现,可是logpolar 没办法选择ROI只能全图变换,所以我想把圆所在的部分摘出来作为一张图处理,圆处于图像中心,这样就可以用logpolar展开了。
      请问有其他的方法可以实现吗?上周我用copy to fb 一直报错没解决,今天迫不得已就用setwindow了😔 结果也不容乐观。0_1533545626663_QQ截图20180806165340.png

      发布在 OpenMV Cam
      T
      tg3m
    • 识别球的数量

      请问我想识别图像里球的数量用哪个函数可以实现,球都是完全一样的。

      发布在 OpenMV Cam
      T
      tg3m
    • RE: 改变window 会导致图像滤波失效?
      实际运行会发现有滤波的图像一闪而过,但是稳定保留在准缓冲区的只是灰度图
      发布在 OpenMV Cam
      T
      tg3m
    • 改变window 会导致图像滤波失效?
      # Untitled - By: xrj - 周一 8月 6 2018
      
      import sensor, image, time,pyb
      
      sensor.reset()
      sensor.set_pixformat(sensor.GRAYSCALE)
      sensor.set_framesize(sensor.QVGA)
      sensor.skip_frames(time = 2000)
      
      clock = time.clock()
      
      while(True):
          clock.tick()
          img = sensor.snapshot()
          high_threshold = (160, 255)                        #二值化范围
          img.gaussian(1)                                    #模糊滤波
          img.binary([high_threshold])                       #二值化
          img.erode(5)
          
          sensor.skip_frames(time = 1000)
          sensor.set_windowing((320,240))
          img = sensor.snapshot()
          img.gaussian(1)                                    #模糊滤波
          img.binary([high_threshold])                       #二值化
          img.erode(5)
          sensor.skip_frames(time = 1000)
          sensor.set_windowing((240,240))
          img = sensor.snapshot()
          img.gaussian(1)                                    #模糊滤波
          img.binary([high_threshold])                       #二值化
          img.erode(5)
          sensor.skip_frames(time = 1000)
          sensor.set_windowing((240,150))
          img = sensor.snapshot()
          img.gaussian(1)                                    #模糊滤波
          img.binary([high_threshold])                       #二值化
          img.erode(5)
          sensor.skip_frames(time = 1000)
          sensor.set_windowing((150,150))
          img = sensor.snapshot()
          img.gaussian(1)                                    #模糊滤波
          img.binary([high_threshold])                       #二值化
          img.erode(5)
          sensor.skip_frames(time = 1000)
          
      
      
      以上是我对例程的稍作修改,按理来讲这个程序运行的结果是每经过1S图像会减小一个尺寸,同时显示的应该是一个经过处理后的图像,但是实际上显示的只是窗口不断减小的灰度图原图,并没有展现图像滤波处理效果,请问这里面的原因是什么,可以修改吗?我想要在主函数循环结构内部应用set_windowing来修改显示的区域,但是这个问题导致无法观测到图像处理的效果。
      

      2_1533535103549_QQ截图20180806135725.png 1_1533535103548_QQ截图20180806135717.png 0_1533535103548_QQ截图20180806135656.png
      下面的照片是正常情况下图像处理的结果。
      0_1533535137332_QQ截图20180806135751.png

      谢谢!
      发布在 OpenMV Cam
      T
      tg3m
    • RE: OSError:cannot copy to fb!

      @kidswong999 这个copy函数当True的时候是吧拷贝的部分直接替换帧缓冲区还是要先保存副本到堆,再第二步替换帧缓冲区的图像

      发布在 OpenMV Cam
      T
      tg3m
    • RE: OSError:cannot copy to fb!

      @yuan 我用SAVE保存的截取的图像我看了以下是50KB,介绍里不是说有大得多的空间吗,这个函数应该是把帧缓冲区的图像替换吧?如果是替换的话,应该不能是内存不够的原因吧

      发布在 OpenMV Cam
      T
      tg3m
    • RE: OSError:cannot copy to fb!
      我希望达成的效果是在当前的IMG中截取我需要的部分作为新的img,并代替原来的在帧缓存区显示
      发布在 OpenMV Cam
      T
      tg3m
    • OSError:cannot copy to fb!
      ####导入库函数
      import sensor, time, image, pyb
      ####传感器复位
      sensor.reset()
      
      # 传感器设置
      sensor.set_contrast(3)             #设置相机对比度
      sensor.set_gainceiling(16)         #设置相机增益上限为16
      sensor.set_framesize(sensor.QVGA)  #设置缓冲区大小为320*240
      sensor.set_windowing((310,240))   #设置显示屏大小为320*240
      sensor.set_pixformat(sensor.GRAYSCALE) #设置为灰度模式
      sensor.set_auto_gain(False, value=100)  #禁用自动增益,强迫增益值为100
      sensor.skip_frames(time = 1000)       #设置延时以应用设置
      
      clock = time.clock()
      num=0
      lastnum=0
      numeanmax=0
      judge=0
      i=0
      sumnum=0
      qiu=7
      check=0
      a=0
      b=0
      r=0
      
      
      while (True):
       clock.tick()
      
       ######## 循环滤波图像处理
       high_threshold = (160, 255)                        #二值化范围
       img = sensor.snapshot()
       img.gaussian(1)                                    #模糊滤波
       img.binary([high_threshold])                       #二值化
       img.erode(4)
      ############找到圆形,确定中心,确定截取范围
       for c in img.find_circles(threshold = 25000, x_margin = 10, y_margin = 10, r_margin = 70,r_min = 70, r_max =100, r_step = 2):
           img.draw_circle(c.x(), c.y(), c.r(), color = (255, 0, 0))
           print(c[0],c[1],c[2])
           a=c[0]
           b=c[1]
           aw=2*min(a,b,240-b,310-a)
           ah=2*min(a,b,240-b,310-a)
           ax=a-int(aw/2)
           ay=b-int(ah/2)
           roi=(ax,ay,aw,ah)
           img.draw_rectangle(ax,ay,aw,ah,color=(0),thickness=2)
      
       high_threshold = (160, 255)                        #二值化范围
       img = sensor.snapshot()
       img.median(1, percentile=0.6)                      #中值滤波
       img.gaussian(1)                                    #模糊滤波
       img.binary([high_threshold])                       #二值化
       img.dilate(4)
      # img.save('image/',roi,quality=50)
       img.copy(roi,copy_to_fb=(True))
      

      0_1533277323423_对对对.png

      错误显示无法拷贝到缓存,可是我设置的缓存区大小是320*240的,截取的图片是要小于这个大小的。我用img.save可是用,能够保存到本地,但是copy就不行,想请教一下原因,错误在哪里。谢谢各位!

      发布在 OpenMV Cam
      T
      tg3m
    • RE: 这个怎么解决?

      0_1533277075979_QQ截图20180803141743.png
      可能是import的问题,也可能是固件的问题

      发布在 OpenMV Cam
      T
      tg3m