DataScience
article thumbnail
Face swapping-Matching the two faces triangulation(part 3)
영상처리/기초 2023. 1. 6. 00:01

포인트의 인덱스 번호를 이용하여 다른 특징을 가진 두 얼굴의 같은 포인트 인덱스 번호 위치의 삼각형을 판별하고 해당 삼각형으로 원본 얼굴에서 타겟얼굴로 매칭을 해줍니다. 랜드마크 포인트 배열에서 삼각형의 인덱스를 추출하기 위해 나중에 필요한 함수를 만들었습니다. import cv2 import numpy as np import dlib def extract_index_nparray(nparray): index = None for num in nparray[0]: index = num break return index 교환하려는 두 이미지를 로드하고 그레이스케일로 변환한 다음 얼굴 렌드마크 검출기도 로드합니다. img = cv2.imread("bradley_cooper.jpg") img2 = cv2.imr..

article thumbnail
Face swapping-Delaunay Triangulation(part 2) 들로네 삼각분할
영상처리/기초 2023. 1. 5. 11:49

추출한 얼굴을 타겟 얼굴에 매칭시켜주기 위해 들로네 삼각분할을 합니다. Delaunay(들로네) Triangulation(삼각분할)은 "어떤 삼각형의 외접원도 그 삼각형의 세 꼭지점을 제외한 다른 어떤 점도 포함하지 않는다" 최대한 정삼각형의 모양과 가깝게 분할한다는 특징이 있다. 아래 코드는 원본 마스크에서 들로네 삼각분할을 구현한 내용입니다. # Delaunay triangulation rect = cv2.boundingRect(convexhull) subdiv = cv2.Subdiv2D(rect) subdiv.insert(landmarks_points) triangles = subdiv.getTriangleList() triangles = np.array(triangles, dtype=np.int3..

article thumbnail
Face swapping (part1) 얼굴 교환
영상처리/기초 2023. 1. 5. 11:16

두 배우의 얼굴 사진이 있습니다. 얼굴 wrapping은 세단계로 구분됩니다. 1. 얼굴 특징에서 포인트를 추출합니다. 2. 얼굴 랜드마크를 통해서 위부경계를 만듭니다 3. 랜드마크와 타겟 얼굴 특징(피부색,크기,회전)을 맞춰줍니다. 아래 코드는 두단계를 구현한겁니다. 얼굴의 외부 경계 가져오기 이미지에서 얼굴 추출 얼굴 특징 포인트 추출을 위한 데이터 https://drive.google.com/file/d/1OQBLy3LlQN_oABy0SsEcaTU3TcWbvqlY/view?usp=sharing shape_predictor_68_face_landmarks.dat drive.google.com 라이브러리 import해주고 이미지를 로드하고 그레이스케일 형식으로 변환하고 마스크(원본 이미지와 동일한 크기..

article thumbnail
haar cascade face detection 얼굴 검출
영상처리/기초 2023. 1. 5. 10:02

위 논문에서 제안한 특징(feature)을 기반으로 비디오 또는 이미지에서 오브젝트를 검출하기 위해 사용됩니다. 직사각형 영역으로 구성되는 특징을 사용기 때문에 픽셀을 직접 사용할 때 보다 동작 속도가 빠릅니다. 찾으려는 오브젝트(얼굴)가 포함된 이미지와 오브젝트가 없는 이미지를 사용하여 Haar Cascade Classifier(하르 특징 분류기)를 학습시키고 분류기를 사용하여 오브젝트를 검출합니다. 알고리즘은 다음 4단계로 구성됩니다. Haar Feature Selection (하르 특징 선택) Creating Integral Images(적분 이미지 생성) Adaboost Training(adaboost 학습) Cascading Classifiers(특징 분류기) 하르 특징 선택 두개의 사각형으로 ..

article thumbnail
object tracking 객체 추적

HTML 삽입 미리보기할 수 없는 소스 Object detection 객체 감지는 모든 단일 프레임 및 프레임 후 프레임 입니다. Object tracking 객체 추적은 프레임별 추적을 수행하지만 시간이 지남에 따라 객체가 있는 위치의 기록을 유지합니다. 가능한 애플리케이션은 특정 영역에 몇 명의 사람이 있는지 계산하거나 컨베이어 벨트를 통과하는 물체의 수를 확인하거나 고속도로에서 차량을 계산 등이 있습니다. cv2를 import 해주고 먼저 Highway.mp4 파일을 호출하고 마스크를 생성 해야 합니다. 알고리즘의 "배경 비율" 매개변수를 반환한 다음 마스크를 생성하는 createBackgroundSubtractorMOG2 함수도 사용했습니다. import cv2 from object_trackin..

article thumbnail
YOLO 객체 검출 알고리즘
영상처리/기초 2023. 1. 4. 10:26

Opencv에서 YOLO를 사용하는 방법 cv2와 numpy를 import해줍니다. import cv2 import numpy as np 알고리즘을 실행하려면 세 개의 파일이 필요합니다. weight 파일: 물체를 감지하는 알고리즘의 핵심인 훈련된 모델입니다. Cfg 파일 : 알고리즘의 모든 설정이 있는 구성 파일입니다. name 파일: 알고리즘이 감지할 수 있는 개체의 이름을 포함합니다. weights 파일 다운로드(용량이커서 링크로대체) #버전에 따라 net.getUnconnectedOutLayers()가 1차원,2차원 일 수 있습니다. 그러므로 layer_names[i[0] -1] 에서 layer_names[i -1] 으로 수정해줬습니다. modelConfiguration = "yolo_object..

cv2.error: OpenCV(4.7.0) D:\a\opencv-python\opencv-python\
영상처리/기초 2023. 1. 3. 15:33

cv2.error: OpenCV(4.7.0) D:\a\opencv-python\opencv-python\opencv\modules\dnn\src\darknet\darknet_importer.cpp:210: error: (-212:Parsing error) Failed to open NetParameter file: yolov3.cfg in function 'cv::dnn::dnn4_v20221220::readNetFromDarknet' 파이썬에서 opencv import는 되었지만 net = cv2.dnn.readNet() 함수가 작동안함 가상환경을 새로 만들어서 numpy, opencv-python을 다시 설치해주니 해결됐습니다.