diff --git a/xbob/flandmark/__init__.py b/xbob/flandmark/__init__.py index fb661e8d8d1a1ad699dcfdccd4bc9f99da91be3d..78e5ae94f6c9d9b230b828dd5bed9ccc1b8f0681 100644 --- a/xbob/flandmark/__init__.py +++ b/xbob/flandmark/__init__.py @@ -120,7 +120,7 @@ class Localizer(_flandmark.Localizer): return super(Localizer, self).__call__(gray, b_y, b_x, b_height, b_width) elif image.ndim == 2: - return super(Localizer, self).__call__(gray, b_y, b_x, b_height, b_width) + return super(Localizer, self).__call__(image, b_y, b_x, b_height, b_width) else: raise TypeError, "Localizer accepts images as numpy.ndarray objects with either 2 or 3 dimensions" diff --git a/xbob/flandmark/ext/ext.cpp b/xbob/flandmark/ext/ext.cpp index 5997d521dc0231a63bf478764bddfcde3a32a74d..9fc71a1d93defac923356cc510ac3f9c698ade04 100644 --- a/xbob/flandmark/ext/ext.cpp +++ b/xbob/flandmark/ext/ext.cpp @@ -139,16 +139,19 @@ class Localizer { ipl_image->imageData = (char*)input.bz<uint8_t,2>().data(); int bbox[4] = {b_x, b_y, b_x + b_width, b_y + b_height}; + int flandmark_result; { bob::python::no_gil unlock; - flandmark_detect(ipl_image.get(), bbox, m_flandmark.get(), + flandmark_result = flandmark_detect(ipl_image.get(), bbox, m_flandmark.get(), m_landmarks.get()); } - + list lmlist; ///< landmark list - for (int i = 0; i < (2*m_flandmark->data.options.M); i += 2) { - lmlist.append(make_tuple(m_landmarks[i], m_landmarks[i+1])); + if (flandmark_result == NO_ERR) { + for (int i = 0; i < (2*m_flandmark->data.options.M); i += 2) { + lmlist.append(make_tuple(m_landmarks[i], m_landmarks[i+1])); + } } return object(lmlist);