전공 과목 이수2👨‍💻/디지털영상처리 10

얼굴 학습 훈련

출처 : https://kau-deeperent.tistory.com/53 LBF(Local Binary Pattern)을 이용한 얼굴인식 작성자 : 박승재 기본적인 흐름은 노트북의 카메라 웹캠을 통한 Training_data를 모으고, LBPFacerecognizer를 이용한 model을 training_data로 학습한 후에 노트북 웹캠으로 사람의 얼굴이 인지 되었을 때 회 kau-deeperent.tistory.com import cv2 import numpy as np import os from os import listdir from os.path import isfile, join def detect_face(img): #convert the test image to gray image as ..

객체 트랙킹

""" Tracking any object using dlib discriminative correlation filter tracker 동작 프로그램이 시작되면 마우스로 추적하고자 하는 물건을 드래그하여 4각영역을 선택한다. 키 1을 누르면 트래킹을 시작한다. 키 2를 누르면 중지한다. q를 누르면 종료한다. 참고: 마우스로 영역선택할 때 추적 대상을 얼굴로 추적하면 얼굴을 추적한다. 미션 현재의 프로그램을 동영상 버전으로 수정하시오. 스페이스 바를 누르면 재생이 잠시 중지된다. 이때 마우스 드래그로 목표 영역을 선택한다. """ # Import required packages: import cv2 import dlib def draw_text_info(): """Draw text information..

다양한 영상처리 기법을 트랙바로 조절해보기

lut함수 없이 -> 따라서 he트랙바 조절시 변화 없음 import cv2 as cv import numpy as np import time def printImgAtt (string): global garo global saero print("\n" + string) data = eval(string) # eval(문자열) - 실행가능한 문자열을 바로 실행시켜주는 함수 print(' type :', type(data)) # imge type = print(' shape = ', data.shape) # 영상 어레이의 크기 알아내기. image shape = (세로, 가로, 3). (행, 열, 채널) saero = data.shape[0] garo ..

밝기를 트랙바로 조절해보기

import numpy as np import cv2 as cv import matplotlib.pyplot as plt # 이미지 불러오고 정규화 Path = 'D:/dip/' Name = 'dark1.png' FullName = Path+Name img = cv.imread(FullName,1) img=img/255.0 cv.namedWindow('Brighter image') # scale 트랙바 움직일때 호출되는 콜백 함수 def Change_scale(pos) : global img2 bar = cv.getTrackbarPos("scale", "Brighter image") #-> scale값을 bar에 저장할 수 있다 scale = 1+pos*0.1 # 트랙바 값에 따른 밝기의 정도 img2 ..

화질 개선 기법(감마, 시그모이드, 히스토그램, 샤프닝, 메디언)

1~5절 - 대조비 강화 혹은 약화처리 6~7절 - 선명성 향상 8~9절 - 잡음 제거 # 감마변환 output = input의 감마승 (이때 input은 0~1사이로 정규화) 감마r 1 : 어둡게 처리, 어두운 부분은 어둡게 # LUT(look up table) 함수 연산의 단순화 방법 출력값 테이블 생성하고 처리하는 방법 # 시그모이드 변환 명암의 대조비 강화 m:중간값, w: 강화강도, E: 기울기정도 (대비와 비례) 분모가 0이 될 가능성이 있기에 1이라는 엡실론을 설정. m은 최소 0.5로 설정 w는 0위로 설정 # 히스토그램과 히스토그램 스트레칭 **중요** # 히스토그램이란 화소 값들 개별 누적 개수 히스토그램 방법 1) ** 중요 많이 쓰임 ** np.historgram()함수 이용. nd..

엣지검출 pyplot.imshow vs cv.imshow

# pyplot.imshow vs cv.imshow 1) pyplot.imshow() 1채널, 부동소수 영상은 부호가 있는 수를 표현할 때 매우 편리하다. 데이터의 범위나 자료형에 영향 받지 않고 최소, 최대를 구해 자체 정규화(흑백일때)하여 출력한다. cmap 파라미터의 설정에 따라 여러 color map을 활용한 영상 출력을 시도할 수 있다. cv.imshow() 처럼 흑백 모노 그레이로 표현하려면 cmap='gray'로 설정하여야 한다. 그렇지 않으면 default pseudo color map이 선택되어 칼라로 1채널 영상이 출력된다. 2) cv.imshow() 함수의 출력 범위 부동소수 데이터: 0~1의 값만 출력한다. 음수는 0으로 간주하고 1을 넘는 값은 1로 간주한다. 정수형 데이터: 0~..

이미지 가로, 세로 평균필터링 적용

# 1) : 실습 3을 2x2 서브 화면으로 나누고, 4번째 화면에는 양방향(가로/세로)으로 평균필터링한 영상을 출력하시오. Path = '../data/' # 현재 상위 폴더의 상위 폴더 아래에 있는 Images 폴더. Name = 'lenna.tif' FullName = Path + Name monarch = cv.imread(FullName) monarch = monarch[..., ::-1] fig = plt.figure(num = 'mission filter') #,figsize=(8,8) plt.subplots_adjust(left=0.02, right=0.9, bottom=0.03, top=0.9) plt.subplots(constrained_layout=True) # 최적의 사이즈로 변환,..

커널 / 필터링

# 실습 1: OpenCV 기반의 간략형 실험 - averaging kernel을 사용한 filtering def prt_mtx(a, fmt): # 어레이를 출력하는 함수 print(f"\n shape of the array={a.shape}") for r in range(a.shape[0]): for c in range(a.shape[1]): print(f"{a[r, c]:{fmt}}", end="") print() cv.imshow('img', img) N = 31 #N = 7 kernel = np.ones((N, N), np.float32)/(N * N) # N*N으로 나누어 정규화한다. print(np.sum(kernel)) # 커널의 모든 원소의 값을 합하면 1이 된다. (출력 0.9999..)..

이미지 위에 마우스로 사각형 그리기

https://velog.io/@codren/%EC%B9%B4%EB%A9%94%EB%9D%BC%EC%99%80-%EB%8F%99%EC%98%81%EC%83%81-%EC%B2%98%EB%A6%AC -> 참고 비디오 파일 읽어온다 capture = cv2.VideoCapture(FullName) 영상의 total frame capture.get(CAP_PROP_FRAME_COUNT) 현재 프레임 번호 capture.get(CAP_PROP_POS_FRAMES) 속성변경 함수 capture.set(속성상수, 지정하고싶은 속성값) -> retval 성공 유무 ROI *중요* OpenCV에서는 ROI를 mouse drag 동작으로 화면상에 쉽게 선택할 수 있는 selectROI() 함수를 제공한다. retval =..