def main(in_img_path):
        rgb_img = cv2.imread(in_img_path)
        overlay_img = cv2.imread(OVERLAY_IMG_PATH, -1)
        cascade = cv2.CascadeClassifier(CASCADE_PATH)

        faces = cascade.detectMultiScale(cv2.cvtColor(rgb_img,
                                                      cv2.COLOR_BGR2GRAY),
                                         scaleFactor=1.1,
                                         minNeighbors=1,
                                         minSize=(1, 1))
        if len(faces) <= 0:
            check_img(rgb_img, 'total', True, OUT_IMG_PATH)
            return

        for (x, y, w, h) in faces:
            face_img = rgb_img[y:y + h, x:x + w]
            if not is_skin(face_img):
                continue

            # color = hsv_to_bgr(get_hair_color_hsv(face_img))
            name, hsv = detect_aikatsu_charactors['anime_based']['bgr_diff'](
                get_hair_color_hsv(face_img))
            color = hsv_to_bgr(hsv)
            cv2.rectangle(rgb_img, (x, y), (x + w, y + h), color, thickness=7)

        check_img(rgb_img, 'total', True, OUT_IMG_PATH)
예제 #2
0
def main(in_img_path):
    rgb_img = cv2.imread(in_img_path)
    overlay_img = cv2.imread(OVERLAY_IMG_PATH, -1)
    cascade = cv2.CascadeClassifier(CASCADE_PATH)

    faces = cascade.detectMultiScale(cv2.cvtColor(rgb_img, cv2.COLOR_BGR2GRAY),
                                     scaleFactor=1.1, minNeighbors=1, minSize=(1, 1))
    if len(faces) <= 0:
        return

    for (x, y, w, h) in faces:
        face_img = rgb_img[y:y + h, x:x + w]

        check_img(face_img, 'face_img', CHECK_IMG_FLAG, OUT_IMG_PATH)
        if not is_skin(face_img):
            continue

        alpha_channel = get_alphachannel(face_img)
        check_img(alpha_channel, 'alpha_channel', CHECK_IMG_FLAG, OUT_IMG_PATH)
        alpha_channel = fill_void(alpha_channel)

        resized_overlay_img = cv2.resize(overlay_img, tuple((w, h)))
        mask_img = cv2.bitwise_and(resized_overlay_img, resized_overlay_img,
                                   mask=alpha_channel)
        check_img(mask_img, 'mask_img', CHECK_IMG_FLAG, OUT_IMG_PATH)
        for i, j in [(i, j) for i in range(h) for j in range(w)]:
            if any(mask_img[i, j]):
                rgb_img[y + i, x + j] = mask_img[i, j]

    check_img(rgb_img, 'total', CHECK_IMG_FLAG, OUT_IMG_PATH)
예제 #3
0
def main(in_img_path):
    rgb_img = cv2.imread(in_img_path)
    overlay_img = cv2.imread(OVERLAY_IMG_PATH, -1)
    cascade = cv2.CascadeClassifier(CASCADE_PATH)

    faces = cascade.detectMultiScale(cv2.cvtColor(rgb_img, cv2.COLOR_BGR2GRAY),
                                     scaleFactor=1.1,
                                     minNeighbors=1,
                                     minSize=(1, 1))
    if len(faces) <= 0:
        return

    for (x, y, w, h) in faces:
        face_img = rgb_img[y:y + h, x:x + w]

        check_img(face_img, 'face_img', CHECK_IMG_FLAG, OUT_IMG_PATH)
        if not is_skin(face_img):
            continue

        alpha_channel = get_alphachannel(face_img)
        check_img(alpha_channel, 'alpha_channel', CHECK_IMG_FLAG, OUT_IMG_PATH)
        alpha_channel = fill_void(alpha_channel)

        resized_overlay_img = cv2.resize(overlay_img, tuple((w, h)))
        mask_img = cv2.bitwise_and(resized_overlay_img,
                                   resized_overlay_img,
                                   mask=alpha_channel)
        check_img(mask_img, 'mask_img', CHECK_IMG_FLAG, OUT_IMG_PATH)
        for i, j in [(i, j) for i in range(h) for j in range(w)]:
            if any(mask_img[i, j]):
                rgb_img[y + i, x + j] = mask_img[i, j]

    check_img(rgb_img, 'total', CHECK_IMG_FLAG, OUT_IMG_PATH)
예제 #4
0
    def __init__(self,
                 group,
                 x,
                 y,
                 level,
                 damage=1,
                 health=10,
                 size=(1, 2),
                 speed=(2, 2),
                 image=None):
        super().__init__(group)

        self.x, self.y = x, y  # In cell
        self.size_x, self.size_y = size  # In cell
        cell = level.cell_size
        self.rect = [x * cell, y * cell, size[0] * cell, size[1] * cell]

        self.location = level
        self.surface = level.surface

        self.image = check_img(
            "hello", (level.cell_size * size[0], level.cell_size * size[1]))

        self.speed = speed  # Speed in move (module)

        self.damage = damage

        self.hp = health
예제 #5
0
    def __init__(self, surface, x, y, level, size=(1, 2), image=None):
        self.surface = surface
        self.x, self.y = x, y
        self.size_x, self.size_y = size
        self.location = level

        self.img = check_img(image, (level.cell_size, level.cell_size * 2))
예제 #6
0
 def __init__(self,
              surface,
              width,
              height,
              s_x=0,
              s_y=0,
              text="Menu",
              image=None):
     self.surface = surface
     self.width = width
     self.height = height
     self.buttons = [
         Button_menu(surface,
                     490,
                     200,
                     300,
                     100,
                     "Play",
                     image="resource/menu/background.jpg"),
         Button_menu(surface, 490, 350, 300, 100, "Settings"),
         Button_menu(surface, 490, 500, 300, 100, "Exit")
     ]
     self.x, self.y = s_x, s_y
     self.text = text
     self.img = check_img(image, (width - s_x, height - s_y))
예제 #7
0
 def __init__(self, surface, start_and_size, cell_size, image=None):
     self.surface = surface
     self.rect = start_and_size  # (x, y, size_x, size_y)
     self.cell_size = cell_size
     x, y, size_x, size_y = start_and_size
     self.img = check_img(image, (size_x, size_y))
     self.objects = {"wall": []}
    def main(in_img_path):
        rgb_img = cv2.imread(in_img_path)
        overlay_img = cv2.imread(OVERLAY_IMG_PATH, -1)
        cascade = cv2.CascadeClassifier(CASCADE_PATH)

        faces = cascade.detectMultiScale(cv2.cvtColor(rgb_img, cv2.COLOR_BGR2GRAY),
                                         scaleFactor=1.1, minNeighbors=1, minSize=(1, 1))
        if len(faces) <= 0:
            check_img(rgb_img, 'total', True, OUT_IMG_PATH)
            return

        for (x, y, w, h) in faces:
            face_img = rgb_img[y:y + h, x:x + w]
            if not is_skin(face_img):
                continue

            # color = hsv_to_bgr(get_hair_color_hsv(face_img))
            name, hsv = detect_aikatsu_charactors['anime_based']['bgr_diff'](get_hair_color_hsv(face_img))
            color = hsv_to_bgr(hsv)
            cv2.rectangle(rgb_img, (x, y), (x + w, y + h), color, thickness=7)

        check_img(rgb_img, 'total', True, OUT_IMG_PATH)
예제 #9
0
 def set_size(self, size):
     self.size_x, self.size_y = size
     self.img = check_img(self.img, size)
예제 #10
0
 def set_image(self, img):
     self.img = check_img(img, (self.size_x, self.size_y))