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



    • import sensor, time, image, pyb
      
      import lcd
      
      
      RED_LED_PIN = 1
      
      GREEN_LED_PIN = 2
      
      
      
      sensor.reset() # Initialize the camera sensor.
      
      sensor.set_pixformat(sensor.GRAYSCALE) # or sensor.GRAYSCALE
      
      sensor.set_framesize(sensor.B128X128) # or sensor.QQVGA (or others)
      
      sensor.set_windowing((92,112))
      
      lcd.init() # Initialize the lcd screen.
      
      #lcd初始化
      
      
      
      
      
      face_cascade = image.HaarCascade("frontalface", stages=25)
      
      
      
      
      #SUB = "s1"
      
      NUM_SUBJECTS = 3 #图像库中不同人数,一共3人
      
      NUM_SUBJECTS_IMGS = 20 #每人有20张样本图片
      
      
      
      # 拍摄当前人脸。
      while (True):
      
          img = sensor.snapshot()
      
          objects = img.find_features(face_cascade, threshold=0.75, scale=1.35)
      #img = image.Image("face/%s/1.pgm"%(SUB))
          for r in objects:
      
              img.draw_rectangle(r)
      
          img = sensor.snapshot()
          d0 = img.find_lbp((0, 0, img.width(), img.height()))
      
      #d0为当前人脸的lbp特征
      
          img = None
      
          pmin = 999999
      
          num=0
      
      
      
          def min(pmin, a, s):
      
              global num
      
              if a<pmin:
      
                  pmin=a
      
                  num=s
      
              return pmin
      
      
      
          for s in range(1, NUM_SUBJECTS+1):
      
              dist = 0
      
              for i in range(2, NUM_SUBJECTS_IMGS+1):
      
                  img = image.Image("face/s%d/%d.pgm"%(s, i))
      
                  d1 = img.find_lbp((0, 0, img.width(), img.height()))
      
              #d1为第s文件夹中的第i张图片的lbp特征
      
                  dist += image.match_descriptor(d0, d1)#计算d0 d1即样本图像与被检测人脸的特征差异度。
      
         # print("Average dist for subject %d: %d"%(s, dist/NUM_SUBJECTS_IMGS))
      
              pmin = min(pmin, dist/NUM_SUBJECTS_IMGS, s)#特征差异度越小,被检测人脸与此样本更相似更匹配。
      
         # print(pmin)
              if pmin < 6000:
                 pyb.LED(GREEN_LED_PIN).on()
                 print(num)
              else:
                 pyb.LED(GREEN_LED_PIN).off()
                 pyb.LED(RED_LED_PIN).on()
                 print(0)
      
      
              lcd.display(sensor.snapshot()) # Take a picture and display the image.
      
          #将图像显示在lcd中
      


    • 上面是我现在的代码,是人脸检测和人脸分辨同时进行,要怎样改成先检测有无人脸存在,有人脸则计算LBP特征值,无人脸则直接输出无人脸?



    • objects就是人脸的数组。

      if not objects:
          print("没有人脸")
          continue #下一次循环
      


    • @kidswong999 识别成功后要在屏幕上显示人的编号该怎么加,加哪里呢