root@bskyvision: ~#
방명록
태그
RSS

<닫기>

3,562,156/3,854/1,660

프로필사진
수많은 소음 속에서 신호를 찾아가는 bskyvision입니다.


<닫기>

  • 꼬장이이(가) 07.25에 작성한 댓글: test.

<닫기>


오늘은 웹캠 영상에서 검출된 얼굴들에 모자이크 효과를 넣어보도록 하겠습니다. 다음과 같은 절차를 거쳐서 얼굴들에 모자이크 효과를 넣을 것입니다. 

 

1) 우선 cvlib 라이브러리의 얼굴 검출 모델(딥러닝 기반)을 이용해서 영상의 각 프레임 내 얼굴들을 검출합니다. 

2) 얼굴 부분을 잘라내서 크기를 축소시킨 다음에 다시 원래 사이즈로 확대시켜서 모자이크 효과를 준 것을 다시 프레임에 붙여넣습니다. 얼굴 부분의 해상도를 확 줄인 다음에 다시 확대시키기 때문에 모자이크 처리된 것처럼 보이게 됩니다.

 

얼굴에 모자이크 효과 넣기 알고리즘.

 

제가 작성한 python 코드는 다음과 같습니다. 이 코드를 실행하기 위해서는 cvlib과 opencv-python 패키지가 필요하니 설치가 안 되어 있다면 설치해주세요. 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# import necessary packages
import cvlib as cv
import cv2
 
# open webcam
webcam = cv2.VideoCapture(0)
 
if not webcam.isOpened():
    print("Could not open webcam")
    exit()
    
 
# loop through frames
while webcam.isOpened():
 
    # read frame from webcam 
    status, frame = webcam.read()
 
    if not status:
        print("Could not read frame")
        exit()
 
    # apply face detection
    face, confidence = cv.detect_face(frame)
 
    print(face)
    print(confidence)
 
    # loop through detected faces
    for idx, f in enumerate(face):
        
        (startX, startY) = f[0], f[1]
        (endX, endY) = f[2], f[3]
 
        '모자이크 효과 주기: 얼굴 부분을 줄였다가 다시 원크기로 복구시키면 모자이크처럼 됨.'
        face_region = frame[startY:endY, startX:endX]
        
        M = face_region.shape[0]
        N = face_region.shape[1]
 
        face_region = cv2.resize(face_region, None, fx=0.05, fy=0.05, interpolation=cv2.INTER_AREA)
        face_region = cv2.resize(face_region, (N, M), interpolation=cv2.INTER_AREA)
        frame[startY:endY, startX:endX] = face_region
 
    # display output
    cv2.imshow("Real-time face detection", frame)
 
    # press "Q" to stop
    if cv2.waitKey(1& 0xFF == ord('q'):
        break
    
# release resources
webcam.release()
cv2.destroyAllWindows() 
cs

 

위 코드를 실행하면 웹캠을 통해 촬영되는 영상에서 검출되는 얼굴들이 모자이크 처리됩니다. 

 

 

꽤 괜찮게 얼굴들이 검출되어 모자이크 처리되었죠? 얼굴 각도가 너무 틀어졌을 때는 검출에 실패하는 경우도 있긴 하지만요. cvlib에서 제공하는 얼굴 검출 모델이 opencv 라이브러리에서 제공하는 Haar cascade 방식의 얼굴 검출기보다 훨씬 정확합니다. 속도도 real-time으로 적용할 수 있을만큼 빠르고요. 

 

 

b스카이비전의 추천글

[ubuntu+python] 얼굴 검출 

 

[ubuntu+python] 얼굴 검출

오늘은 파이썬을 이용해서 얼굴을 검출해보겠습니다. 먼저 설치해야하는 라이브러리들이 있습니다. opencv-python과 cvlib입니다. opencv-python는 이미지를 읽고 쓰기 위해 필요하고, cvlib은 얼굴 검출��

bskyvision.com

[ubuntu+python] 웹캠 영상 실시간 물체(객체) 검출

 

[ubuntu+python] 웹캠 영상 실시간 물체(객체) 검출

[파이썬] 얼굴 검출 https://bskyvision.com/675 [파이썬] 얼굴 검출 후 성별 인식 https://bskyvision.com/677 [파이썬] 물체 검출 https://bskyvision.com/678 지난 번에 말씀드린대로 오늘은 웹캠으로 촬영되는..

bskyvision.com

 

  1. OJS이(가) 2021.02.01 16:49에 작성한 댓글:
    안녕하세요! 컴퓨터 비전 공부중인 대학생입니다. 다름이 아니라 resize를 통하여 모자이크 효과를 준 영상/이미지에 대해서 다시한번 resize하여 원본을 얻을 수 있는 방법론에 대해서 도움 주실수 있으신가요...?   주소   수정/삭제   답글
    • 꼬장스카이비젼이(가) 2021.02.01 17:12에 작성한 답글:
      구글에 "저해상도 이미지 복원 머신러닝/딥러닝" 검색해보시고 해결 안되는 부분을 질문해보는것도 좋은 방법일 것 같네요!

      오픈소스도 있습니다 ^^
      https://github.com/YukihoAA/waifu2x_snowshell/releases
        주소   수정/삭제
    • 비스카이비전이(가) 2021.02.02 02:34 신고에 작성한 답글:
      축소시킨 후에 다시 resize를 통해서 확대시키면 품질에서 손상이 있을 수 밖에 없습니다. 대신에 저해상도 영상을 고해상도 영상으로 변환해주는 이미지 초해상화(super-resolution)라는 연구 분야가 있는데, 그것을 참고하시는 것이 좋을 것 같습니다. ㅎㅎ https://bskyvision.com/531   주소   수정/삭제
    • OJS이(가) 2021.02.02 10:19에 작성한 답글:
      답글 정말 감사합니다! 참고하겠습니다ㅎㅎ   주소   수정/삭제
  2. bb이(가) 2022.06.05 16:05에 작성한 댓글:
    안녕하세요 !! 주말 잘 보내고 계신가요?
    웹캠으로 촬영하고 yolo 사용해서 실시간으로 객체 검출을 하는데 bounding box 좌표 알아내서 특정 좌표를 벗어나면 알림이 울리게 하고 싶은데
    어떻게 구조를 짜야할 지 모르겠어서. .
    조언을 부탁드려도 될까요? ㅠ_ㅠ
    현재 yolov5로 객체 인식까지는 완료하였습니다. . .
      주소   수정/삭제   답글
    • bb이(가) 2022.06.05 16:42에 작성한 답글:
      더 자세히 설명하자면 . . 미리 좌표를 추출해서 영역을 지정하고, 인식된 캑체의 클래스가 해당 영역의 클래스 안으로 들어갔을 때 일치하지 않으면 알람을 울리게 하고 싶습니다 .. !   주소   수정/삭제
    • 비스카이비전이(가) 2022.06.05 20:34 신고에 작성한 답글:
      우선 질문해주셔서 감사합니다. 그런데 이미 어떻게 해야 할지 알고 계신 것 같은데요?

      if 검출된 bounding box 좌표가 특정 영역 안에 있다면:

      노 알림

      else:

      알림

      이런 구조로 가시면 될 것 같은데.. 코드로 구현 하시는 것이 어려우신 상황이신 건가요?

        주소   수정/삭제
  3. bb이(가) 2022.06.05 20:48에 작성한 댓글:
    네. . 코드로 어떻게 구현 해야 할지 모르겠어서요 . .
    원하는 영역 좌표 지정하고 . . 인식된 객체의 좌표를 어떻게 불러올 수 있을까요 . . ?
      주소   수정/삭제   답글
  4. 대건고 학생이(가) 2022.07.21 15:25에 작성한 댓글:
    혹시 해당 코딩에 활용된 파이썬의 버전을 알 수 있을까요..?   주소   수정/삭제   답글
이름
비밀번호
홈페이지
비밀여부