def get_example(self, i):
# type: (any) -> typing.Tuple[str, Image]
path, image = super().get_example(i)
image_array = numpy.asarray(image)
image_height, image_width = image_array.shape[:2]
if len(image_array.shape) == 2: # gray image
gray = image_array
else:
gray = cv2.cvtColor(image_array, cv2.COLOR_RGB2GRAY)
facerects = self.classifier.detectMultiScale(
gray,
scaleFactor=1.1,
minNeighbors=5,
minSize=(64, 64))
if len(facerects) == 0:
return path, None # more sophisticated way to handle errors?
x, y, width, _ = facerects[0]
margin = int(width * self.margin_ratio)
if min(
y, image_height - y - width,
x, image_width - x - width,
) < margin: # cannot crop
return path, None
cropped = image_array[y - margin:y + width + margin, x - margin:x + width + margin]
if self.output_resize is None:
return path, Image.fromarray(cropped)
else:
return path, Image.fromarray(cropped).resize(self.output_resize)
face_dataset.py 文件源码
python
阅读 18
收藏 0
点赞 0
评论 0
评论列表
文章目录