cv.iplimage object has no attribute 'save'
When performing the program, I get the following error: "cv.iplimage object has no attribute 'save'" in module "croppedImage.save(fname+'_crop'+str(n)+ext)". Please, tell me where I go wrong? It is my first python+opencv script, so be tolerant :) code:
#!/usr/bin/python
import cv
import time
import Image
import glob
import os
#Functions
def DetectFace(image, faceCascade, returnImage=False):
min_size = (20,20)
haar_scale = 1.1
min_neighbors = 3
haar_flags = 0
cv.EqualizeHist(image, image)
faces = cv.HaarDetectObjects(
image, faceCascade, cv.CreateMemStorage(0),
haar_scale, min_neighbors, haar_flags, min_size
)
if faces and returnImage:
for ((x, y, w, h), n) in faces:
# Convert bounding box to two CvPoints
pt1 = (int(x), int(y))
pt2 = (int(x + w), int(y + h))
cv.Rectangle(image, pt1, pt2, cv.RGB(255, 0, 0), 5, 8, 0)
if returnImage:
return image
else:
return faces
def pil2cvGrey(pil_im):
pil_im = pil_im.convert('L')
cv_im = cv.CreateImageHeader(pil_im.size, cv.IPL_DEPTH_8U, 1)
cv.SetData(cv_im, pil_im.tostring(), pil_im.size[0] )
return cv_im
def cv2pil(cv_im):
return Image.fromstring("L", cv.GetSize(cv_im), cv_im.tostring())
def imgCrop(image, cropBox, boxScale=1):
xDelta=max(cropBox[2]*(boxScale-1),0)
yDelta=max(cropBox[3]*(boxScale-1),0)
PIL_box=[cropBox[0]-xDelta, cropBox[1]-yDelta, cropBox[0]+cropBox[2]+xDelta, cropBox[1]+cropBox[3]+yDelta]
return image.crop(PIL_box)
def faceCrop(imagePattern,boxScale=1):
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
# MAIN
capture = cv.CaptureFromCAM(0)
faceCascade = cv.Load('haarcascade_frontalface_alt.xml')
while (cv.WaitKey(15)==-1):
img = cv.QueryFrame(capture)
img.save(fname+'_captured'+str(n)+ext)
faceCrop('home/face-control/facedetect/*.jpg',boxScale=1)
P.S. Sorry for my english.