반응형

파이썬(Python)/opencv 24

[Python]OpenCV 카메라로 얼굴, 눈 인식하고 모자이크 하기#2(CascadeClassifier)

목차 파이썬 OpenCV 카메라로 얼굴, 눈 인식하고 모자이크 하기 앞 포스터에서 CascadeClassifier 함수를 사용해서 컴퓨터 카메라로 나오는 얼굴을 인식하는 방법에 대해 알아보았습니다. (https://scribblinganything.tistory.com/554) 이번 시간에는 앞서 검출해낸 얼굴에 모자이크를 씌우는 방법에 대해 알아보겠습니다. 모자이크를 만드는 과정은 아래와 같은 단계가 필요 합니다. 1. 카메라 실행하기 2. 카메라에 이미지(Image) 가져오기 3. 이미지를 흑백으로 변환하기 4. 이미지에서 얼굴 인식하기 5. 얼굴의 위치 정보 가져오기(사각형) 6. 이미지에서 얼굴 위치 부분의 이미지 가져오기 7. 얼굴 위치 부분 이미지에 blur 함수로 모자이크 씌우기 8. 원본 ..

[Python]OpenCV 카메라로 얼굴, 눈 인식하고 모자이크 하기#1(CascadeClassifier)

목차 파이썬 OpenCV 얼굴, 눈 인식 함수(CascadeClassifier) 이번 포스트에서는 OpenCV에서 제공하는 CascadeClassifier 함수를 사용해서 얼굴과 눈을 인식해서 출력해보겠습니다. 흔히 구글 지도나 네이버 지도 거리뷰를 보면 사람들 얼굴이 모자이크 처리가 된것을 볼 수 있습니다. 하나 하나 모자이크를 한다면 얼마나 힘들겠습니까.... 그래서 위와 같은 함수를 사용해서 사람 얼굴을 인식하고 모자이크 처리 해주는 것입니다. 이번 포스트에서는 사람 얼굴 부분과 눈 부분을 인식하는 방법에 대해 알아보고 다음 장에서 인식한 부분을 모자이크 처리하는 방법에 대해 알아보겠습니다. CascadeClassifier는 Haar Cascades 라는 사람의 논문에 Face Detection 방..

[Python]OpenCV 카메라 모션 감지(Motion Sensor)(countNonZero, bitwise_and, threshold, absdiff)

목차 파이썬 OpenCV 움직임 감지 카메라 구현 방법 이번 시간에는 파이썬 OpenCV를 사용해서 컴퓨터의 내장 카메라를 구현하고 카메라에서 촬영하고 있는 화면의 움직임(Motion)을 감지하고 출력하는 코드를 작성할 예정입니다. 해당 프로젝트를 진행하기 위해서는 아래와 같은 절차가 필요 합니다. 1. PC 카메라 동작 2. 카메라에서 읽은 이미지(Image) Delay 줘서 Capture 하기 3. 이미지 파일을 회색으로 반전하기 4. 회색으로 반전된 이미지 간에 값 차이 구하기 : 움직임이 있을 경우 값 차이 발생 5. 무의미한 움직임 제거를 위해 문턱값(Therhold)으로 필터링(Filtering) 6. 카운팅 함수를 사용해서 움직임이 발생한 픽셀 값을 카운트함 7. 모션을 출력 모션 센싱은 위..

[Python] OpenCV PC 카메라 특정 색상만 출력하기 (Camera, BGR, HSV, inRange, bitwise_and)

목차 파이썬 카메라의 특정 색상만 보여주기 동작 방식 이번 포스트는 노트북에 카메라를 사용해서 화면의 빨간색(Red), 녹색(Green), 파란색(Blue)만을 구분해서 해당 색상만을 보여주는 화면을 각 각 띄울 예정입니다. 총 4개의 윈도우가 화면에 나오고 하나는 원본 나머지는 Red, Green, Blue 윈도우 입니다. 이를 구현하기 위해서는 아래의 과정이 필요 합니다. 1. 카메라 동작 구현 2. RGB 색상의 범위 결정 (HSV 사용) 3. RGB 색상의 임계값을 사용해서 마스크 생성 4. 마스크를 원본 화면에 적용 5. 화면 출력 우선 코드 작성에 앞서 2번 단계 "RGB 색상의 범위 결정"은 선행되어야 합니다. 아래 목차에서 확인하도록 하겠습니다. RGB 색상의 범위 결정 빨간색(Red), ..

[Python]OpenCV 임계값 비교하기 threshold

목차 이번 포스트에서는 이미지가 가지고 있는 픽셀값을 threshold 함수를 사용해서 사용자가 지정한 문턱 값과 비교해서 옵션에 따라 처리하는 예제를 실행합니다. 우선 원본으로 사용할 이미지는 아래와 같습니다. 예제 코드>> import cv2 img = cv2.imread('gradient.jpg') print(img) cv2.imshow("original", img) cv2.waitKey(0) cv2.destroyAllWindows() 결과>> [[[116 116 116] [116 116 116] [116 116 116] ... 원형태로 가운데로 갈수록 밝아지는(픽셀값은 255에 가까워짐) 그림입니다. 파이썬 OpenCV threshold 함수 Syntax 이미지(image)의 임계값을 확인해서 비..

[Python]OpenCV 픽셀 처리 함수: add, subtract, multiply, divide

목차 앞서 이미지(image)나 동영상(video) 파일을 읽어서 불러온 이미지는 픽셀(pixel)의 BGR(Blue, Green, Red) 값으로 구성 됨을 확인하였습니다. (https://scribblinganything.tistory.com/493) 이번 포스트는 픽셀을 비교 (연산) 분석할때 사용하는 주요 함수에 대해 알아보겠습니다. 함수는 더하기, 빼기, 곱하기 나누기 입니다. 함수 사용에 앞서 race_car.jpg 라는 그림 파일을 불러서 동일 사이즈로 BGR이 100, 100, 100인 그림을 만들어서 해당 그림과 비교하는 형식으로 예제를 실행하겠습니다. 예제 코드>> import numpy as np import cv2 img = cv2.imread("race_car.jpg") base_..

[Python]OpenCV 픽셀 처리 함수:max,min,absdiff,compare

목차 앞서 이미지(image)나 동영상(video) 파일을 읽어서 불러온 이미지는 픽셀(pixel)의 BGR(Blue, Green, Red) 값으로 구성 됨을 확인하였습니다. (https://scribblinganything.tistory.com/493) 이번 포스트는 픽셀을 비교 (연산) 분석할때 사용하는 주요 함수에 대해 알아보겠습니다. 함수 사용에 앞서 race_car.jpg 라는 그림 파일을 불러서 동일 사이즈로 BGR이 100, 100, 100인 그림을 만들어서 해당 그림과 비교하는 형식으로 예제를 실행하겠습니다. 예제 코드>> import numpy as np import cv2 img = cv2.imread("race_car.jpg") base_pixel = np.full(img.shape,..

[Python]OpenCV 3차원 이미지 스캔화면(2차원)처럼 바꾸기

목차 [Python]OpenCV 기하학적 변형하기(Geometry formation) 이번 포스트는 이름을 어떻게 작성할까 고민 끝에 일반 사진(Picture) 파일을 2차원의 스캔(Scan)한 것과 같은 효과로 만드는 것 같아서 스캔하기로 적었습니다. 이전 장에서는 2차원 평면(Plane)의 그림(Image)을 원근(Perspective)을 줘서 3차원처럼 보이게 만들었는데 이번에는 반대로 3차원의 원근 거리감이 있는 이미지 파일을 거리감이 없어지게 변형하는 코드를 작성해 보았습니다. 설명에 앞서 아래 예제의 결과를 먼저 공유 해서 이번 포스트의 진행 방향을 쉽게 이해가도록 하겠습니다. 아래 예제 결과>> 최근에 위와 같은 예제를 명함이나 스마트폰의 사진 기술에서 많이 볼 수 있습니다. 명함을 비뚫게 ..

[Python]OpenCV 이미지 기울어지게 만들기, 원근감 주기(getPerspectiveTransform, warpPerspective)

목차 파이썬 OpenCV 이미지 파일 원근감 주기(Perspective) 이번 포스트에서는 파이썬의 OpenCV를 사용해서 사진 파일(Picture file)을 불러와서 2차원 평면을 기울려서 3차원과 같은 형태로 원근감을 줘보겠습니다. 그림이 멀리서 보이는 듯하게 보이게 하기 위해서는 아래 작업들이 필요 합니다. 1. 원본 이미지 픽셀 크기 확인 2. getPerspectiveTransform 함수 3. warpPerspective 함수 사실 함수 사용법만 알면 간단하게 할 수 있는 작업입니다. getPerspectiveTransform 함수 사용에 대해 알아보겠습니다. getPerspectiveTransform(원본 이미지 좌표, 변경할 이미지 좌표) 입력값으로 원본 이미지의 좌표와 변경할 이미지의 ..

[Python]OpenCV 사람 얼굴 사진 겹치게 합성하기, 겹치면서 사진 바꾸기

목차 [Python]OpenCV 사람 얼굴 사진 겹치게 합성하기 이번 포스트에서는 파이썬 OpenCV를 사용해서 사람 얼굴이 있는 이미지 파일 2개를 열어서 한 얼굴에서 다른 얼굴로 그라데이션 처럼 천천히 바뀌는 예제를 구현할 것입니다. 이번 예제(Example)를 구현하기 위해서는 OpenCV 로 읽은 이미지 파일(Image file)은 픽셀값을 저장한 Numpy 행렬 형태라는 사실을 이해 해야 하고 두 이미지 사이에 픽셀 값에 Weighting을 주면서 점차적으로 바꿔야 한다는 원리를 이해하여야 합니다. 픽셀값(Pixel value)에 대한 설명은 아래 포스터에 잘되어 있으니 참조 하시길 바랍니다. https://scribblinganything.tistory.com/493 [Python]OpenCV..

반응형