본문 바로가기

전체 글235

CH01 OpenCV-Python(Computer Vision) 황선규 박사님의 패스트 캠퍼스 OpenCV 강의 공부한 내용을 정리해 보았습니다. OpenCV OpenCV는 Open Source Computer Vision Library OpenCV를 활용하여 물체인식, 얼굴인식, 제스처 인식을 비롯하여 자율 주행 자동차, OCR 판독기, 불량검사기 등에 활용 OpenCV는 영상 처리가 들어가는 프로그램이라면 가히 필수적으로 사용하게 되는 라이브러리 *프로젝트 주의사항 제작할 프로그램 설계를 효율적으로 진행하고 완성하기 위한 작업의 첫 걸음은 프로그램이 어떤 목적을 가지고 어떤 역할을 할지 정확하게 파악하는 것 =이것은 카메라의 성능의 선택과 알고리즘의 구성 선택에 필연적인 영향을 미친다. so, 프로그램의 목적을 정확히 파악하고 영상 처리에 필요한 적합한 하드웨어와.. 2021. 12. 18.
이미지 연산, 배열 정합(addWeighted) 이미지 연산 * cv2.add() import cv2 as cv import sys img1 = cv.imread('code007\\color_image.jpg') img2 = cv.imread('tetris_blocks.png') img_hsv = cv.cvtColor(img1, cv.COLOR_BGR2HSV) # add를 위한 동일한 이미지 사이즈로 변경 print(img1.shape) # 640, 1920 ( h ,w ) img2 = cv.resize(img2, (1920,640)) if img1 is None and img2 is None: print('Image load failed') sys.exit() # cv2.add(src1, src2) img_sum = cv.add(img1, img2).. 2021. 12. 12.
모폴로지 연산(Morphology) 모폴로지 변환의 팽창(dilation)과 침식(erosion)을 기본 연산으로 사용해 고급 형태학을 적용하는 변환 연산 입력 이미지가 이진화된 이미지라면 팽창과 침식 연산으로도 우수한 결과를 얻을 수 있다. 하지만, 그레이스케일이나 다중 채널 이미지를 사용하는 경우 더 복잡한 연산을 필요 ▪ 모폴로지(Morphology) 연산이란? • 영상을 형태학적인 측면에서 다루는 기법 • 다양한 영상 처리 시스템에서 전처리(pre-processing) 또는 후처리(post-processing) 형태로 널리 사용 • 수학적 모폴로지(mathematical morphology) ▪ 구조 요소(Structuring element) • 모폴로지 연산의 결과를 결정하는 커널, 마스크, 윈도우 # 만약 세로방향으로만 침식 o.. 2021. 12. 12.
opencv-VideoCapture, VideoWriter 프레임은 비디오나 영화, TV등이 영상 매체를 전달할 때 화면에 뿌려주는 한장 한장의 그림을 말합니다. 이러한 한장 한장의 그림들이 초당 얼마간의 속도로 빠르게 바뀌면서 움직이는 하나의 동영상을 만들어 내게 됩니다. 영화에서 쓰이는 필름을 떠 올려보십시요. 그 필름에서 보이는 하나 하나의 그림이 바로 프레임을 뜻합니다. 이것은 인간의 시각이 한 장의 그림을 본 후 뇌에 전달하기 까지의 과정에서 또 다른 한 장의 그림을 보여줌으로써 실제로는 한 장,한 장 의 그림을 본 것임에도 움직인다고 느끼게 만드는 일종의 눈 속임이라고 볼 수 있습니다. # camera cap = cv.VideoCapture(0) # in 예외처리 if not cap.isOpened(): print('Camera open failed'.. 2021. 12. 11.
opencv-HSV, YCrCb(특정 색 추출) * HSV - 특정 색 추출 - RGB는 영상을 어떤것을 가져왔느냐에 따라 성능이 다름(밝기) - HSV에선 Value로 명암을 조절할 수 있기 때문에 더 유용함 ''' # HSV ( Hue, Saturation, Value ) 색상, 채도, 명도 H(0~180), S(0~255), V(0~255) inRange = 낮은 범위(lowerb)에서 높은 범위(upperb) 사이의 요소를 추출 ''' img = cv.imread('code007\\color_image.jpg') img_hsv = cv.cvtColor(img, cv.COLOR_BGR2HSV) # HSV (h, s, v) = cv.split(img_hsv) # cv.split # HSV = 특정 색만 검출 할 수 있다 # hsv 이미지 참조(0~.. 2021. 12. 11.
opencv-findContours # Counting Objects(contours 윤곽선, hierarchy 계층구조) # cv2.findContours(이진화 이미지(mask), 검색 방법, 근사화 방법) contours, hierarchy = cv.findContours(dst.copy(), cv.RETR_EXTERNAL, \ cv.CHAIN_APPROX_SIMPLE) # [contours[i]] = 윤곽선 표시 # cv.CHAIN_APPROX_SIMPLE 윤곽점들 단순화 수평, 수직 및 대각선 요소를 압축하고 끝점만 남김 print(contours) # 각 점으로 표시됨 print(hierarchy[0][1]) # cv2.drawContours(이미지, [윤곽선], 윤곽선 인덱스, (B, G, R), 두께, 선형 타입) # 윤곽선.. 2021. 12. 11.
opencv-basic https://076923.github.io/posts/Python-opencv-1/ Python OpenCV 강좌 : 제 1강 - OpenCV 설치 OpenCV 076923.github.io OpenCV Open Source Computer Vision Library 이미지 불러오기 (cv.imread) import cv2 as cv # 이미지 불러오기 img = cv.imread('cat.bmp') (h,w,d) = img.shape print(img.shape) cv2.namedWindow("image", cv2.WINDOW_AUTOSIZE) # WINDOW_NORMAL = 영상 크기가 클때(마우스로 크기를 줄이거나 키울 수 있음) # WINDOW_AUTOSIZE = default cv.imshow.. 2021. 12. 11.
Python에서 시간 측정하기(Decorator, Command line) * Decorator 활용 import time from functools import wraps def check_time(function): @wraps(function) def measure(*args, **kwargs): start_time = time.time() result = function(*args, **kwargs) end_time = time.time() print(f"@check_time: {function.__name__} took {end_time - start_time}") return result return measure @check_time def test_function(): for _ in range(10000): print("Just print something") .. 2021. 9. 26.
Generative Adversarial Networks, GAN GAN의 대립적인 의미를 이해한다. DCGAN의 Latent 개념과 그 연산에 대해서 이해한다. CycleGAN의 개념을 이해한다. GAN의 개념을 설명할 수 있다. GAN에서 생성자와 판별자의 공통된 모듈이 어디에 있는 지 파악할 수 있다. 학습된 CheckPoint 저장하고, 불러올 수 있다. 생성한 이미지를 gif형태로 제작할 수 있다. Convolution Neural Network(CNN)을 기반으로한 생성모델인 Deep Convolutional GAN (DCGAN), CycleGAN GAN 생성적 대립 신경망 이미지를 생성하는 원리를 “경찰과 위조지폐범”으로 비유하여 설명합니다. 위조지폐범은 위조지폐를 진짜 지폐와 거의 비슷하게 만듭니다. 위조지폐를 진짜 지폐로 속이고 사용할 수 있도록 말이죠.. 2021. 8. 29.