zoukankan      html  css  js  c++  java
  • 吴裕雄--天生自然python学习笔记:python 用 Open CV抓取脸部图形及保存

    将面部的范围识别出来后,可以对识别出来的部分进行抓取。抓取一张图片中
    的部分图形是通过 pillow 包中的 crop 方法来实现的

    我们首先学习用 pillow 包来读取图片文件,语法为:

    例如,打开 test.jpg 图片文件,然后保存至 img 变量:

    接着我们用 crop 方法抓取图片的指定范围,语法为:

    例如,抓取( 50,50 )到( 200,200 )的图片并保存在 img2 变量:

    不同图片所抓取下来的面部大小可能不一致,为了方便图形对比,可以将图片
    调整为固定大小 。 pillow 包中的 resize 方法可实现对图片尺寸的重新设定:

     

     

     

    抓取图片中的面部区域并保存
    先用 OpenCV 取得面部区域 , 再用 pillow 包中的 crop 方法抓取面部区域并保存 。

    import cv2 
    from PIL import Image
    
    casc_path = "E:\haarcascade_frontalface_default.xml"
    faceCascade = cv2.CascadeClassifier(casc_path)
    imagename = "F:\pythonBase\pythonex\ch10\media\person1.jpg"
    image = cv2.imread(imagename)
    faces = faceCascade.detectMultiScale(image, scaleFactor=1.1, minNeighbors=5, minSize=(30,30), flags = cv2.CASCADE_SCALE_IMAGE)
    count = 1
    for (x,y,w,h) in faces:
        cv2.rectangle(image, (x,y), (x+w,y+h), (128,255,0), 2)
        filename = "E:\" + str(count)+ ".jpg"
        image1 = Image.open(imagename)
        image2 = image1.crop((x, y, x+w, y+h))
        image3 = image2.resize((200, 200), Image.ANTIALIAS)
        image3.save(filename)
        count += 1
    cv2.namedWindow("facedetect")
    cv2.imshow("facedetect", image)
    cv2.waitKey(0)  
    cv2.destroyWindow("facedetect")

     

     

    import cv2 
    from PIL import Image
    
    casc_path = "E:\haarcascade_frontalface_default.xml"
    faceCascade = cv2.CascadeClassifier(casc_path)
    imagename = "F:\pythonBase\pythonex\ch10\media\person3.jpg"
    image = cv2.imread(imagename)
    faces = faceCascade.detectMultiScale(image, scaleFactor=1.1, minNeighbors=5, minSize=(30,30), flags = cv2.CASCADE_SCALE_IMAGE)
    count = 1
    for (x,y,w,h) in faces:
        cv2.rectangle(image, (x,y), (x+w,y+h), (128,255,0), 2)
        filename = "E:\aa\" + str(count)+ ".jpg"
        image1 = Image.open(imagename)
        image2 = image1.crop((x, y, x+w, y+h))
        image3 = image2.resize((200, 200), Image.ANTIALIAS)
        image3.save(filename)
        count += 1
    cv2.namedWindow("facedetect")
    cv2.imshow("facedetect", image)
    cv2.waitKey(0)  
    cv2.destroyWindow("facedetect")

     

    import cv2 
    from PIL import Image
    
    casc_path = "E:\haarcascade_frontalface_default.xml"
    faceCascade = cv2.CascadeClassifier(casc_path)
    imagename = "F:\pythonBase\pythonex\ch10\media\person8.jpg"
    image = cv2.imread(imagename)
    faces = faceCascade.detectMultiScale(image, scaleFactor=1.1, minNeighbors=5, minSize=(30,30), flags = cv2.CASCADE_SCALE_IMAGE)
    count = 1
    for (x,y,w,h) in faces:
        cv2.rectangle(image, (x,y), (x+w,y+h), (128,255,0), 2)
        filename = "E:\aa\bb\" + str(count)+ ".jpg"
        image1 = Image.open(imagename)
        image2 = image1.crop((x, y, x+w, y+h))
        image3 = image2.resize((200, 200), Image.ANTIALIAS)
        image3.save(filename)
        count += 1
    cv2.namedWindow("facedetect")
    cv2.imshow("facedetect", image)
    cv2.waitKey(0)  
    cv2.destroyWindow("facedetect")

     

  • 相关阅读:
    vscode中使用less写css样式出现红色波浪线
    vue报错error Trailing spaces not allowed no-trailing-spaces
    visual code 报错error Expected space or tab after '//' in comment spaced-comment
    笔记本电脑已经启动却黑屏
    连接MySQL报错The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone.
    IDEA搭建基于maven的springboot工程
    eclipse 下修改Dynamic Web Modulle 的问题
    firefox(火狐)下 js中设置checkbox属性checked="checked"已有,但复选框却不显示勾选的原因
    unbtun python tab补全
    python之路:进阶篇 内置函数
  • 原文地址:https://www.cnblogs.com/tszr/p/12032899.html
Copyright © 2011-2022 走看看