mirror of
https://github.com/jlengrand/Ivolution.git
synced 2026-03-10 08:21:18 +00:00
Refactors code to remove out_im. Functional
This commit is contained in:
@@ -115,7 +115,7 @@ class FaceMovie(object):
|
||||
self.dim_x = self.x_af + self.x_center
|
||||
self.dim_y = self.y_af + self.y_center
|
||||
|
||||
def show_faces(self, time=1000, equalize=True):
|
||||
def show_faces(self, mytime=1000, equalize=True):
|
||||
"""
|
||||
Show all faces that have been found for the guys.
|
||||
The time for which each image will be displayed can be chosen.
|
||||
@@ -123,11 +123,11 @@ class FaceMovie(object):
|
||||
"""
|
||||
for a_guy in self.guys:
|
||||
if a_guy.has_face():
|
||||
a_guy.create_video_output(self.dim_x,
|
||||
out_im = a_guy.create_video_output(self.dim_x,
|
||||
self.dim_y,
|
||||
self.x_center,
|
||||
self.y_center)
|
||||
a_guy.out_display(time)
|
||||
self.out_display(out_im, a_guy.name, time=mytime)
|
||||
|
||||
def save_faces(self, out_folder, im_format="png"):
|
||||
"""
|
||||
@@ -136,11 +136,11 @@ class FaceMovie(object):
|
||||
"""
|
||||
for a_guy in self.guys:
|
||||
if a_guy.has_face():
|
||||
a_guy.create_video_output(self.dim_x,
|
||||
out_im = a_guy.create_video_output(self.dim_x,
|
||||
self.dim_y,
|
||||
self.x_center,
|
||||
self.y_center)
|
||||
a_guy.save_result(out_folder, im_format)
|
||||
self.save_result(out_im, a_guy.name, out_folder, im_format)
|
||||
|
||||
def save_movie(self, out_folder, equalize=True):
|
||||
"""
|
||||
@@ -166,14 +166,37 @@ class FaceMovie(object):
|
||||
ii += 1
|
||||
if a_guy.has_face():
|
||||
print "frame %d" %(ii)
|
||||
a_guy.create_video_output(self.dim_x,
|
||||
out_im = a_guy.create_video_output(self.dim_x,
|
||||
self.dim_y,
|
||||
self.x_center,
|
||||
self.y_center)
|
||||
cv.WriteFrame(my_video, a_guy.out_im)
|
||||
cv.WriteFrame(my_video, out_im)
|
||||
|
||||
def number_guys(self):
|
||||
"""
|
||||
Simply returns the number of guys in the current to-be movie
|
||||
"""
|
||||
return len(self.guys)
|
||||
return len(self.guys)
|
||||
|
||||
def out_display(self, im, name, time=1000, im_x=640, im_y=480):
|
||||
"""
|
||||
Displays the output image, for time ms.
|
||||
Setting time to 0 causes the image to remains open.
|
||||
Window name slightly changed to match output
|
||||
"""
|
||||
win_name = name + " - out"
|
||||
cv.NamedWindow(win_name, cv.CV_WINDOW_NORMAL)
|
||||
cv.ResizeWindow(win_name, im_x, im_y)
|
||||
cv.ShowImage(win_name, im)
|
||||
cv.WaitKey(time)
|
||||
cv.DestroyWindow(win_name)
|
||||
|
||||
def save_result(self, im, name, out_folder, ext):
|
||||
"""
|
||||
Saves output image to the given format (given in extension)
|
||||
"""
|
||||
file_name = name + "." + ext
|
||||
out_name = os.path.join(out_folder, file_name)
|
||||
print "Saving %s" %(out_name)
|
||||
|
||||
cv.SaveImage(out_name, im)
|
||||
@@ -18,13 +18,9 @@ class Guy(object):
|
||||
'''
|
||||
self.in_x = None
|
||||
self.in_y = None
|
||||
|
||||
self.out_x = None
|
||||
self.out_y = None
|
||||
|
||||
self.in_channels = image.nChannels
|
||||
self.name = image_id # Name of the picture used as input
|
||||
self.out_im = None
|
||||
self.in_image = None # input image
|
||||
|
||||
self.faces = [] # List of faces detected for this input
|
||||
@@ -133,8 +129,8 @@ class Guy(object):
|
||||
If eq_ratio is set to something different than one, input image is scaled
|
||||
so that face/size = eq_ratio
|
||||
"""
|
||||
self.out_im = cv.CreateImage((x_size, y_size),cv.IPL_DEPTH_8U, self.in_channels)
|
||||
cv.Zero(self.out_im)
|
||||
out_im = cv.CreateImage((x_size, y_size),cv.IPL_DEPTH_8U, self.in_channels)
|
||||
cv.Zero(out_im)
|
||||
|
||||
# We want to place the input image so that the center of the face matches
|
||||
# x_center and y_center
|
||||
@@ -144,22 +140,23 @@ class Guy(object):
|
||||
h = self.in_y
|
||||
|
||||
rect = (xtl, ytl, w, h)
|
||||
cv.SetImageROI(self.out_im, rect)
|
||||
|
||||
cv.Copy(self.in_image, self.out_im)
|
||||
|
||||
cv.ResetImageROI(self.out_im)
|
||||
cv.SetImageROI(out_im, rect)
|
||||
cv.Copy(self.in_image, out_im)
|
||||
cv.ResetImageROI(out_im)
|
||||
|
||||
return out_im
|
||||
|
||||
def create_debug_output(self):
|
||||
"""
|
||||
NOT FUNCTIONAL ANY MORE
|
||||
Creates output image
|
||||
If debug is set to true, output image is the input image with a red
|
||||
box around the most probable face.
|
||||
"""
|
||||
self.out_im = cv.CreateImage((self.in_x, self.in_y),cv.IPL_DEPTH_8U, self.in_channels)
|
||||
cv.Zero(self.out_im) # put everything to 0
|
||||
out_im = cv.CreateImage((self.in_x, self.in_y),cv.IPL_DEPTH_8U, self.in_channels)
|
||||
cv.Zero(out_im) # put everything to 0
|
||||
|
||||
cv.Copy(self.in_image, self.out_im)
|
||||
cv.Copy(self.in_image, out_im)
|
||||
if self.has_face():
|
||||
# some nice drawings
|
||||
((x, y, w, h), n) = self.faces[0]
|
||||
@@ -167,7 +164,7 @@ class Guy(object):
|
||||
# bounding box of each face and convert it to two CvPoints
|
||||
pt1 = (x, y)
|
||||
pt2 = ((x + w), (y + h))
|
||||
cv.Rectangle(self.out_im,
|
||||
cv.Rectangle(out_im,
|
||||
pt1,
|
||||
pt2,
|
||||
cv.RGB(255, 0, 0),
|
||||
@@ -175,11 +172,12 @@ class Guy(object):
|
||||
|
||||
# Adds point in the center
|
||||
pt3 = (self.x_center, self.y_center)
|
||||
cv.Line(self.out_im,
|
||||
cv.Line(out_im,
|
||||
pt3,
|
||||
pt3,
|
||||
cv.RGB(0, 255, 0),
|
||||
3, 8, 0)
|
||||
return out_im
|
||||
|
||||
def in_display(self, time=1000, im_x=640, im_y=480):
|
||||
"""
|
||||
@@ -191,29 +189,6 @@ class Guy(object):
|
||||
cv.ShowImage(self.name, self.in_image)
|
||||
cv.WaitKey(time)
|
||||
cv.DestroyWindow(self.name)
|
||||
|
||||
def out_display(self, time=1000, im_x=640, im_y=480):
|
||||
"""
|
||||
Displays the output image, for time ms.
|
||||
Setting time to 0 causes the image to remains open.
|
||||
Window name slightly changed to match output
|
||||
"""
|
||||
win_name = self.name + " - out"
|
||||
cv.NamedWindow(win_name, cv.CV_WINDOW_NORMAL)
|
||||
cv.ResizeWindow(win_name, im_x, im_y)
|
||||
cv.ShowImage(win_name, self.out_im)
|
||||
cv.WaitKey(time)
|
||||
cv.DestroyWindow(win_name)
|
||||
|
||||
def save_result(self, out_folder, ext):
|
||||
"""
|
||||
Saves output image to the given format (given in extension)
|
||||
"""
|
||||
file_name = self.name + "." + ext
|
||||
out_name = os.path.join(out_folder, file_name)
|
||||
print "Saving %s" %(out_name)
|
||||
|
||||
cv.SaveImage(out_name, self.out_im)
|
||||
|
||||
def num_faces(self):
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user