본문 바로가기
728x90

OpenCV6

[OpenCV] Template Matching 템플릿 매칭 | 이미지에서 유사한 부분 찾아내기 Template Matching 이미지 템플릿 매칭은 대상 이미지에서 작은 이미지(템플릿)를 찾는 기술로, 컴퓨터 비전 분야에서 많이 사용되는 기술 중 하나이다. OpenCV에서는 cv2.matchTemplate() 함수를 사용하여 이미지 템플릿 매칭을 수행할 수 있는데, 이 함수는 입력 이미지와 템플릿 이미지를 입력으로 받아서, 입력 이미지에서 템플릿과 가장 유사한 부분을 찾아 반환한다. 딥러닝을 사용한 방법처럼 객체의 deformation이 있는 경우에도 잘 매칭되는 알고리즘은 아니지만 템플릿 이미지와 아주 유사한 부분이 입력 이미지에 있는 경우에는 사용하기 좋은 알고리즘이다. 가장 큰 단점은 opencv의 템플릿 매칭은 템플릿 이미지로 대상 이미지를 슬라이딩 하는데, 이때 슬라이딩 윈도우 사이즈를 .. 2023. 3. 31.
[OpenCV] Image Contour 추출 | 이미지 컨투어 | 객체 윤곽선 추출 | 기초적인 segmentation 방법 Image Contour (이미지 윤곽선) 이미지 윤곽선(contour)은 이미지에서 객체(object)의 외곽 경계를 나타내는 곡선이다. 이러한 윤곽선은 객체의 형태, 크기, 방향 등의 정보를 추출하는 데 유용하게 사용된다. 예를 들어, 이미지에서 객체의 위치나 크기를 검출하고, 개체의 외곽을 추출하거나, 개체를 분할(segmentation)하기 위해 윤곽선을 추출한다. 윤곽선을 추출하기 위해서는 대개 이미지의 이진화(binary) 과정이 필요하다. 이진화된 이미지에서는 흰색 픽셀은 개체를, 검은색 픽셀은 배경을 나타냅니다. 이진화된 이미지에서 윤곽선을 추출하는 방법은 여러 가지가 있지만 가장 간단한 방법은 cv2.findContours 함수를 사용하는 것이다. 이 함수는 바이너리 이미지에서 윤곽선을 .. 2023. 3. 30.
[OpenCV] Morphological Operations 모폴로지 연산 | 객체의 내부 채우기 | 객체의 경계 부드럽게 | 객체의 크기 줄이기 | 객체 연결하기 | 경계 강조하기 Morphological Operations (모폴로지 연산) 모폴로지 연산은 이미지 내 객체의 형태, 크기, 구조 등을 분석하거나 변형하는 데 사용되는 기술이다. 주로 바이너리 이미지(흑백 이미지)에서 사용되며, 객체의 형태를 분석하여 이미지 내의 구멍을 채우거나, 객체의 크기를 조절하거나, 객체 간의 거리를 조절하는 등의 작업을 수행할 수 있다. 이러한 모폴로지 연산은 기본적으로 구조 요소(structuring element)를 사용하여 수행되는데 구조 요소는 이미지 내에서 객체의 형태를 결정하는 기준이 된다. 일반적으로 구조 요소는 사각형, 원, 십자가 등의 형태를 가지며, 모양과 크기는 작업에 따라 다르게 선택된다. 모폴로지 연산에는 다양한 종류가 있지만, 대표적으로 팽창(dilation), 침식.. 2023. 3. 29.
[OpenCV] Perspective Transformation (원근 변환) | 왜곡된 영상을 펴주는 방법 Geometric Transformation 영상은 기하학적 변환을 통해 다양한 형태로 변환될 수 있는데 자유도에 따라 translation, eclidean,similarity, affine, perspective(projective) 변환으로 나뉜다. 이 중에서 perspective transformation의 자유도가 가장 크다. 다시 말해 가장 많은 변형을 줄 수 있는 변환이라는 뜻이다. 다양한 컴퓨터 비전 프로젝트에서 카메라의 각도에 따라 왜곡되는 객체나 텍스트 들을 정면으로 바라보는 view로 변환하기 위해 affine 또는 perspective transformation이 사용된다. Perspective Transformation 그 중에서 가장 큰 자유도를 가지는 perspective tr.. 2023. 3. 29.
[openCV] 이미지 위에 선, 사각형, 원 그리기 이미지에서 무언가 검출하고 표시할 때 가장 많이 사용하는 line, rectangle, circle 세 가지 간단 정리. cv2.line(이미지, (시작좌표), (끝 좌표), 컬러, 두께) cv2.rectangle(이미지, (좌상단 좌표), (우하단 좌표), 컬러, 두께) cv2.circle(이미지, (중심 좌표), 반지름, 컬러, 두께) import numpy as np import cv2 black_canvas = np.zeros((500,500,3)) R, G, B = (0,0,255), (0,255,0), (255,0,0) cv2.line(black_canvas, (10,100),(500,300), R, thickness=10) cv2.rectangle(black_canvas, (10, 10), .. 2022. 10. 31.
[python] OpenCV, PIL, Numpy, PyTorch 타입 분석, 타입 변환 정리 # PIL RGB 타입으로 이미지 읽음 torchvision.transforms 모듈에서 지원하는 데이터 타입이 PIL의 Image array 이므로 pytorch 프레임워크 사용시 PIL 로 이미지를 로딩하는 방식을 많이 사용 numpy array 인덱싱 불가능 → 상황에 따라 numpy array로 바꾸기 위한 작업 필요 사이즈 확인시 .size() 메서드로 확인 가능한데, (W,H)로 출력됨. 하지만, numpy array 로 변환시 (H,W,C)로 나오니까 주의. 즉, .size()로 확인 시에만 (W,H)로 나오는 것. from PIL import Image image = Image.open("image.jpg").convert('RGB') image.show() image.save("saved.. 2022. 7. 21.
728x90