星瞳实验室APP,快速收到回复
  • 我们只解决官方正版的OpenMV的问题(STM32),其他的分支有很多兼容问题,我们无法解决。
  • 如果有产品硬件故障问题,比如无法开机,论坛很难解决。可以直接找售后维修
  • 发帖子之前,请确认看过所有的视频教程,https://singtown.com/learn/ 和所有的上手教程http://book.openmv.cc/
  • 每一个新的提问,单独发一个新帖子
  • 帖子需要目的,你要做什么?
  • 如果涉及代码,需要报错提示全部代码文本,请注意不要贴代码图片
  • 必看:玩转星瞳论坛了解一下图片上传,代码格式等问题。
  • 瞳孔识别操作如视频,但是不能标记眼部和瞳孔?



    • # 瞳孔识别例程
      #
      # 这个例子展示了如何找到图像中的眼睛后的瞳孔(瞳孔检测)。 该脚本使用
      # find_eyes函数来确定应该包含瞳孔的roi的中心点。 它通过基本上找到瞳孔
      # 中心的眼睛最黑暗的区域的中心。
      #
      # 注意:此脚本首先不会检测到脸部,请将其与长焦镜头一起使用。
      
      import sensor, time, image
      
      #重置传感器
      sensor.reset()
      
      #传感器设置
      sensor.set_contrast(3)
      sensor.set_gainceiling(16)
      
      # 将分辨率设置为VGA。
      sensor.set_framesize(sensor.VGA)
      
      #拉近镜头,使眼睛的更多细节展现在摄像头中。
      # 裁剪图像到200x100,这提供了更多的细节和更少的数据处理
      
      sensor.set_windowing((220, 190, 200, 100))
      
      sensor.set_pixformat(sensor.GRAYSCALE)
      
      
      # 加载眼睛的haar算子
      # 默认情况下,这将使用所有阶段,较低的阶段更快但不太准确。
      
      eyes_cascade = image.HaarCascade("eye", stages=24)
      print(eyes_cascade)
      
      # FPS clock
      clock = time.clock()
      
      while (True):
      
          clock.tick()
          # Capture snapshot
          img = sensor.snapshot()
          # Find eyes !
          # Note: Lower scale factor scales-down the image more and detects smaller objects.
          # 注意:较低的比例因子会进一步缩小图像,并检测较小的物体。
          # Higher threshold results in a higher detection rate, with more false positives.
          # 阈值越高,检测率越高,假阳性也越多。
      
          eyes = img.find_features(eyes_cascade, threshold=0.5, scale=1.5)
      
          # 先利用find_features函数识别人眼。image.find_features(cascade, threshold=0.5, scale=1.5),thresholds越大,
          # 匹配速度越快,错误率也会上升。scale可以缩放被匹配特征的大小。
      
          # 在识别到的人眼中寻找瞳孔。
      
          for e in eyes:
              iris = img.find_eye(e)
              #image.find_eye((x, y, w, h)),find_eye的参数是一个矩形区域,左上顶点为
              #(x,y),宽w,高h,注意(x,y,w,h)是一个元组,不要漏掉括号()。上行代码中
              #的e即代表识别到的眼睛的矩形区域。
              #find_eye的原理是找到区域中颜色最深处的中心。
              img.draw_rectangle(e)
              img.draw_cross(iris[0], iris[1])
              #用矩形标记人眼,用十字形标记瞳孔。
      
          # Print FPS.
          # 注:实际FPS更高,流FB使它更慢。
          print(clock.fps())
      

      操作后图片如下0_1603968024657_QQ图片20201029183158.png

      具体操作:copy官网的瞳孔识别代码,连接openmv,用长焦镜头。



    • 你先print(eyes)看一下有没有先找到眼睛。

      另外和光线有关系,可以面前加一个灯试试。