#opencv #computer-vision #feature-extraction #dlib #facial-landmark-alignment
#opencv #компьютерное зрение #функция-извлечение #dlib #выравнивание лицевых ориентиров
Вопрос:
Приветствие, я пытался извлечь некоторые области из лица В этом случае (верхняя губа) с помощью Dlib, дело в том, что после извлечения ROI (которые выглядят идеально) я понял, что вокруг ROI есть некоторый шум, Не могу понять, что я делаю неправильно, и как решить эту проблему. Это используемый код Python:
import cv2 import numpy as np import dlib import os from scipy import ndimage, misc import time def extract_index_nparray(nparray): index = None for num in nparray[0]: index = num break return index img = cv2.imread( 'input_facial_image.jpg') img=cv2.resize(img,(512,512)) img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) mask = np.zeros_like(img_gray) detector = dlib.get_frontal_face_detector() predictor = dlib.shape_predictor("/facial-landmarks-recognition/shape_predictor_68_face_landmarks.dat") # Face 1 faces = detector(img_gray) for face in faces: landmarks = predictor(img_gray, face) landmarks_points = [] for n in [48,49,50,51,52,53,54,64,63,62,61,60]: x = landmarks.part(n).x y = landmarks.part(n).y landmarks_points.append((x, y)) points = np.array(landmarks_points, np.int32) convexhull = cv2.convexHull(points) # cv2.polylines(img, [convexhull], True, (255, 0, 0), 3) cv2.fillConvexPoly(mask, convexhull, 255) face_image_1 = cv2.bitwise_or(img, img, mask=mask) cv2.imwrite('extracted_lips.jpg', face_image_1 )
Извлеченное изображение выглядит следующим образом : извлеченное изображение верхней губы Но на дальнейших этапах моей работы я заметил шум вокруг верхней губы, поэтому я осмотрел и нашел uncle_upperlip Есть ли какой-либо способ избавиться от шума во время извлечения ROI или какой-либо метод обработки изображений, чтобы обойти эту проблему? Заранее спасибо
Ответ №1:
Для любого, кто столкнулся с той же проблемой, что и я, это просто. Просто измените формат вывода на png
. Проблема здесь в сжатии JPG. Я надеюсь, что это поможет