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
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
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)
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')
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]
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')
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')
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)
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
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)
# 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)
# ### 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
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) #保存下来
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)