示例#1
0
    def use_camera(self):
        # global cascade, capture, frame_copy
        if not self.is_device_connected():
            return

        try:

            # if camera already openned
            if self.capture is not None:
                return

            if self.cascade is None:
                self.cascade = cv.Load(
                    os.path.join(APPLICATION_PATH, "face.xml"))

            self.capture = cv.CreateCameraCapture(0)

            if self.showVideo:
                cv.NamedWindow("video", 1)

            self.set_resolution(640, 480)

            self.frame_copy = None

        except:
            self.close_camera()
            print "Error in use_camera"
            pass
示例#2
0
    def detect_faces(self, image_filename):
        """ Detects all faces and returns a list with
                images and corresponding coordinates"""

        logging.debug(
            'Start method "detect_faces" for file %s (face-detector.py)' %
            image_filename)
        cascade = cv.Load(parameter.cascadefile)  # load face cascade
        image = cv.LoadImage(image_filename)  # loads and converts image

        # detect and save coordinates of detected faces
        coordinates = cv.HaarDetectObjects(
            image, cascade, cv.CreateMemStorage(), parameter.scaleFactor,
            parameter.minNeighbors, parameter.flags, parameter.min_facesize)

        # Convert to greyscale - better results when converting AFTER facedetection with viola jones
        if image.channels == 3:
            logging.debug(
                'Bild %s wird in Graustufenbild umgewandelt (face-detector.py)'
                % image_filename)
            grey_face = (cv.CreateImage((image.width, image.height), 8,
                                        1))  # Create grey-scale Image
            cv.CvtColor(image, grey_face, cv.CV_RGB2GRAY
                        )  # convert Image to Greyscale (necessary for SURF)
            image = grey_face

        logging.debug(
            '%d faces successfully detected in file %s (face-detector.py)' %
            (len(coordinates), image_filename))
        return image, coordinates
示例#3
0
def faceCrop(imagePattern, boxScale=1):
    # Select one of the haarcascade files:
    #   haarcascade_frontalface_alt.xml  <-- Best one?
    #   haarcascade_frontalface_alt2.xml
    #   haarcascade_frontalface_alt_tree.xml
    #   haarcascade_frontalface_default.xml
    #   haarcascade_profileface.xml
    faceCascade = cv.Load('haarcascade_frontalface_alt.xml')

    imgList = glob.glob(imagePattern)
    if len(imgList) <= 0:
        print('No Images Found')
        return

    for img in imgList:
        pil_im = Image.open(img)
        cv_im = pil2cvGrey(pil_im)
        faces = DetectFace(cv_im, faceCascade)
        if faces:
            n = 1
            for face in faces:
                croppedImage = imgCrop(pil_im, face[0], boxScale=boxScale)
                fname, ext = os.path.splitext(img)
                croppedImage.save(fname + '_crop' + str(n) + ext)
                n += 1
        else:
            print('No faces found:', img)
示例#4
0
 def detect(self, obj, event):
     # First, reset image, in case of previous detections:
     active_handle = self.get_active('Media')
     media = self.dbstate.db.get_media_from_handle(active_handle)
     self.load_image(media)
     min_face_size = (50, 50)  # FIXME: get from setting
     self.cv_image = cv2.LoadImage(self.full_path,
                                   cv2.CV_LOAD_IMAGE_GRAYSCALE)
     o_width, o_height = self.cv_image.width, self.cv_image.height
     cv2.EqualizeHist(self.cv_image, self.cv_image)
     cascade = cv2.Load(HAARCASCADE_PATH)
     faces = cv2.HaarDetectObjects(self.cv_image, cascade,
                                   cv2.CreateMemStorage(0), 1.2, 2,
                                   cv2.CV_HAAR_DO_CANNY_PRUNING,
                                   min_face_size)
     references = self.find_references()
     rects = []
     o_width, o_height = [
         float(t) for t in (self.cv_image.width, self.cv_image.height)
     ]
     for ((x, y, width, height), neighbors) in faces:
         # percentages:
         rects.append((x / o_width, y / o_height, width / o_width,
                       height / o_height))
     self.draw_rectangles(rects, references)
def test(imageFilePath):
    pil_im = Image.open(imageFilePath)
    cv_im = pil2cvGrey(pil_im)
    faceCascade = cv.Load('harr_cass.xml')
    face_im = DetectFace(cv_im, faceCascade, returnImage=True)
    img = cv2pil(face_im)
    img.show()
    img.save('test.png')
示例#6
0
def faces_from_pil_image(pil_image):
    "Return a list of (x,y,h,w) tuples for faces detected in the PIL image"
    storage = cv2.CvMemStorage(0)
    facial_features = cv2.Load('haarcascade_frontalface_alt.xml', storage=storage)
    cv_im = cv2.CreateImageHeader(pil_image.size, cv.IPL_DEPTH_8U, 3)
    cv2.SetData(cv_im, pil_image.tostring())
    faces = cv2.HaarDetectObjects(cv2_im, facial_features, storage)
    # faces includes a `neighbors` field that we aren't going to use here
    return [f[0] for f in faces]
示例#7
0
def test(image_path):
    print("testing")
    print(cv2.__version__)
    pil_image = Image.open(image_path)
    cv_image = convert_to_greyscale(pil_image)

    face_cascade = cv2.Load('haarcascade_frontalface_alt.xml')
    face_image = detect_face(cv_image, face_cascade, return_image=True)

    img = cv_image_to_pilimage(face_image)

    img.show()
    img.save('test.jpg')
示例#8
0
def test(imageFilePath):
    pil_im = Image.open(imageFilePath)
    cv_im = pil2cvGrey(pil_im)
    # Select one of the haarcascade files:
    #   haarcascade_frontalface_alt.xml  <-- Best one?
    #   haarcascade_frontalface_alt2.xml
    #   haarcascade_frontalface_alt_tree.xml
    #   haarcascade_frontalface_default.xml
    #   haarcascade_profileface.xml
    faceCascade = cv.Load('haarcascade_frontalface_alt.xml')
    face_im = DetectFace(cv_im, faceCascade, returnImage=True)
    img = cv2pil(face_im)
    img.show()
    img.save('test.png')
示例#9
0
def detect_object(image):
    '''dect'''
    grayscale = cv2.CreateImage((image.width, image.height), 8, 1)
    cv2.CvtColor(image, grayscale, cv2.CV_BGR2GRAY)

    cascade = cv2.Load("data/haarcascades/haarcascade_frontalface_alt.xml")
    rect = cv2.HaarDetectObjects(grayscale, cascade, cv2.CreateMemStorage(),
                                 1.1, 2, cv2.CV_HAAR_DO_CANNY_PRUNING,
                                 (20, 20))

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

    return result
	def __init__(self, width, height, cascade_file="haarcascade_frontalface_alt.xml"):
		"""
		Detects faces in an image.
		@param width        Width of the images that will be supplied
		@param height       Height of the images that will be supplied
		@param cascade_file Haar cascade data file for fronts of faces
		"""
		
		# Load the cascade
		self.cascade = cv2.Load(cascade_file)
		
		# Storage for the algorithm to use
		self.storage = cv2.CreateMemStorage()
		
		# A grayscale buffer to copy images for processing into
		self.gray = cv2.CreateImage((width, height), 8, 1)
示例#11
0
def detect_object(image):
    '''检测图片,获取人脸在图片中的坐标'''
    grayscale = cv.CreateImage((image.width, image.height), 8, 1)
    cv.CvtColor(image, grayscale, cv.CV_BGR2GRAY)

    cascade = cv.Load(
        "/usr/local/opencv-2.4.9/data/haarcascades/haarcascade_frontalface_alt_tree.xml"
    )
    rect = cv.HaarDetectObjects(grayscale, cascade, cv.CreateMemStorage(), 1.1,
                                2, cv.CV_HAAR_DO_CANNY_PRUNING, (20, 20))

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

    return result
示例#12
0
def detect_object(image):
    print('aaa')
    '''检测图片,获取人脸在图片中的坐标'''

    grayscale = numpy.zeros(image.shape, numpy.uint8) # v2.CreateImage((image.width, image.height), 8, 1)
    cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)


    cascade = cv2.Load("C:/Users/polyv-1107/opencv-3.3.0/data/haarcascades/haarcascade_frontalface_alt_tree.xml")
    rect = cv2.HaarDetectObjects(grayscale, cascade, cv2.CreateMemStorage(), 1.1, 2,
        cv2.CV_HAAR_DO_CANNY_PRUNING, (20,20))

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

    return result
def faceCrop(imagePattern, boxScale=1):
    faceCascade = cv.Load('harr_cass.xml')

    imgList = glob.glob(imagePattern)
    if len(imgList) <= 0:
        print('No Images Found')
        return

    for img in imgList:
        pil_im = Image.open(img)
        cv_im = pil2cvGrey(pil_im)
        faces = DetectFace(cv_im, faceCascade)
        if faces:
            n = 1
            for face in faces:
                croppedImage = imgCrop(pil_im, face[0], boxScale=boxScale)
                fname, ext = os.path.splitext(img)
                croppedImage.save(fname + '_crop' + str(n) + ext)
                n += 1
        else:
            print('No faces found:', img)
示例#14
0
            # bounding box of each face and convert it to two CvPoints
            pt1 = (int(x * image_scale), int(y * image_scale))
            pt2 = (int((x + w) * image_scale), int((y + h) * image_scale))
            cv2.Rectangle(image, pt1, pt2, cv2.RGB(255, 0, 0), 5, 8, 0)

    return image

print ("#2")

def pil2cvGrey(pil_im):
    #from: http://pythonpath.wordpress.com/2012/05/08/pil-to-opencv-image/
    pil_im = pil_im.convert('L')
    cv_im = cv2.CreateImageHeader(pil_im.size, cv2.cv.IPL_DEPTH_8U, 1)
    cv2.SetData(cv_im, pil_im.tostring(), pil_im.size[0]  )
    return cv_im

print ("3")

def cv2pil(cv_im):
    return Image.fromstring("L", cv2.GetSize(cv_im), cv_im.tostring())

print ("4")

pil_im=Image.open('C:/Users/kurnia/Desktop/barackobama.jpg')
#pil_im.show()
cv_im=pil2cvGrey(pil_im)
#the haarcascade files tells opencv what to look for.
faceCascade = cv2.Load('C:/Users/kurnia/AppData/Local/Programs/Python/Python36-32/Lib/site-packages/cv2/data/haarcascade_frontalface_default.xml')
face=DetectFace(cv_im,faceCascade)
img=cv2pil(face)
img.show()
    def loadHaars(self):
        faceCascade = cv.Load("haarcascades/haarcascade_frontalface_alt.xml")
        eyeCascade = cv.Load("haarcascades/haarcascade_eye_tree_eyeglasses.xml")
        mouthCascade = cv.Load("haarcascades/haarcascade_mcs_mouth.xml")

        return (faceCascade, eyeCascade, mouthCascade)
示例#16
0
 #
 ### check that capture device is OK
 if not capture:
     print("Error opening capture device")
     sys.exit(1)
 #
 ### capture the 1st frame to get some propertie on it
 frame = cv2.QueryFrame(capture)
 #
 ### get size of the frame
 frame_size = cv2.GetSize(frame)
 gray = cv2.CreateImage(frame_size, 8, 1)
 small_img = cv2.CreateImage(
     (int(frame_size[0] / image_scale), int(frame_size[1] / image_scale)),
     8, 1)
 cascade = cv2.Load(cascade_name)
 #
 while 1:  # do forever
     # capture the current image
     frame = cv2.QueryFrame(capture)
     if frame is None:
         # no image captured... end the processing
         break
     #
     ### check OS
     if (osName == "nt"):
         cv2.Flip(frame, frame, 0)
     else:
         cv2.Flip(frame, None, 1)
     #
     ### detecting faces here
示例#17
0
from pygame import camera
import pygame
import time
import cv2
import os

# Recognition
HAAR_PATH = "/usr/share/opencv2/haarcascades/"

# Face
FACE_HAAR = os.path.join(HAAR_PATH, "haarcascade_frontalface_default.xml")
FACE_HAAR = cv2.log(FACE_HAAR)

# Eye
EYE_HAAR = os.path.join(HAAR_PATH, "haarcascade_mcs_righteye.xml")
EYE_HAAR = cv2.Load(EYE_HAAR)

# Nose
NOSE_HAAR = os.path.join(HAAR_PATH, "haarcascade_mcs_nose.xml")
NOSE_HAAR = cv2.Load(NOSE_HAAR)

# Mouth
MOUTH_HAAR = os.path.join(HAAR_PATH, "haarcascade_mcs_mouth.xml")
MOUTH_HAAR = cv2.Load(MOUTH_HAAR)

# Screen settings
SCREEN = [640, 360]


def surface_to_string(surface):
    """Convert a pygame surface into string"""
import cv2 as cv

img = cv.LoadImage("friend1.jpg")

image_size = cv.GetSize(img)  #获取图片的大小
greyscale = cv.CreateImage(image_size, 8, 1)  #建立一个相同大小的灰度图像
cv.CvtColor(img, greyscale, cv.CV_BGR2GRAY)  #将获取的彩色图像,转换成灰度图像
storage = cv.CreateMemStorage(0)  #创建一个内存空间,人脸检测是要利用,具体作用不清楚

cv.EqualizeHist(greyscale, greyscale)  #将灰度图像直方图均衡化,貌似可以使灰度图像信息量减少,加快检测速度
# detect objects
cascade = cv.Load('haarcascade_frontalface_alt2.xml')  #加载Intel公司的训练库

#检测图片中的人脸,并返回一个包含了人脸信息的对象faces
faces = cv.HaarDetectObjects(greyscale, cascade, storage, 1.2, 2,
                             cv.CV_HAAR_DO_CANNY_PRUNING, (50, 50))

#获得人脸所在位置的数据
j = 0  #记录个数
for (x, y, w, h), n in faces:
    j += 1
    cv.SetImageROI(img, (x, y, w, h))  #获取头像的区域
    cv.SaveImage("face" + str(j) + ".jpg", img)
    #保存下来
示例#19
0
import cv2
import sys
storage = cv2.CreateMemStorage()
image_path = "yusei.jpg"
img = cv2.imread(image_path)

hc = cv2.Load("../data/haarcascades/haarcascade_frontalface_default.xml")
faces = cv2.HaarDetectObjects(img, hc, storage, 1.1, 3, 0, (0, 0))

max = 0
maxh = 0
maxw = 0
resx = 0
resy = 0
for (x, y, w, h), n in faces:
    if max < w * h:
        maxw = w
        maxh = h
        resx = x
        resy = y
        max = w * h

sub = cv2.GetSubRect(img, (resx, resy, maxw, maxh))
cv2.SaveImage("face_" + sys.argv[1], sub)