微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > 射频无线通信设计 > opencv人脸识别基础使用

opencv人脸识别基础使用

时间:10-02 整理:3721RD 点击:

上一次历经千难万险,终于把opencv编译安装上了,以为opencv的坑可以顺利跨过,专心下一步工作了,没想到使用python时,还是遇到了问题。
我们主要用了python图像处理库——PIL,还有最最关键的opencv的分类器,此外还有对摄像头使用的一些库。

  1. import os
  2. from PIL import Image, ImageDraw
  3. import cv

  4. def detect_object(image):
  5.     '''检测图片,获取人脸在图片中的坐标'''
  6.     grayscale = cv.CreateImage((image.width, image.height), 8, 1)
  7.     cv.CvtColor(image, grayscale, cv.CV_BGR2GRAY)

  8.     cascade = cv.Load("~/Desktop/a.xml")
  9.     rect = cv.HaarDetectObjects(grayscale, cascade, cv.CreateMemStorage(), 1.1, 2,
  10.         cv.CV_HAAR_DO_CANNY_PRUNING, (20,20))

  11.     result = []
  12.     for r in rect:
  13.         result.append((r[0][0], r[0][1], r[0][0]+r[0][2], r[0][1]+r[0][3]))

  14.     return result

  15. def process(infile):
  16.     '''在原图上框出头像并且截取每个头像到单独文件夹'''
  17.     image = cv.LoadImage(infile);
  18.     if image:
  19.         faces = detect_object(image)

  20.     im = Image.open(infile)
  21.     path = os.path.abspath(infile)
  22.     save_path = os.path.splitext(path)[0]+"_face"
  23.     try:
  24.         os.mkdir(save_path)
  25.     except:
  26.         pass
  27.     if faces:
  28.         draw = ImageDraw.Draw(im)
  29.         count = 0
  30.         for f in faces:
  31.             count += 1
  32.             draw.rectangle(f, outline=(255, 0, 0))
  33.             a = im.crop(f)
  34.             file_name = os.path.join(save_path,str(count)+".jpg")
  35.      #       print file_name
  36.             a.save(file_name)

  37.         drow_save_path = os.path.join(save_path,"out.jpg")
  38.         im.save(drow_save_path, "JPEG", quality=80)
  39.     else:
  40.         print "Error: cannot detect faces on %s" % infile

  41. if __name__ == "__main__":
  42.     process("yeelink.jpg")

复制代码


        python dentify_face.py
        
然而这样确报错:

  1. python The node does not represent a user object (unknown type?)

复制代码


        
很诡异的错误,之前从来没遇到过,网上百度,全是关于C++的问题,说什么release和debug版本的问题。经过漫长的搜寻和尝试,根据stackoverflow上的一个回答,我尝试了下它的xml文件,发现确实问题就没有了。
http://stackoverflow.com/questio ... n-error-with-opencv
改成附件的xml就行啦~
a.xml(923.86 KB, 下载次数: 2)

2016-9-20 14:53 上传

点击文件名下载附件



Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top