OpenCV (13) 썸네일형 리스트형 [Python] Python과 C++ 연동 Python은 동작할 때, 컴파일러를 통해 바이트 코드로 변환되어 PVM을 통해 실행된다. 이러한 특징 때문에 빠른 속도를 요구하는 프로그램 작성시 상대적으로 느린 속도를 보인다. 속도 개선을 위해 다양한 방법을 적용할 수 있지만 OpenCV-Python을 사용한 연산에서는 Numba 같은 라이브러리를 지원하지 않기 때문에 어렵다. 이러한 문제를 해결하기 위해 C++로 코드를 작성하고 Python에서 함수 처럼 사용할 수 있도록 하는 pybind11이 나왔다.pybind11은 Python의 C API를 기반으로 한다. 주요 특징은 다음과 같다.간변한 바인딩 : C++ 함수와 클래스를 Python에서 사용할 수 있도록 쉽게 바인딩할 수 있다. C API를 직접 다루지 않아도 된다.자동 타입 변환 : C++.. [Computer Vision] 지역 특징점 검출과 매칭 👀 본 예제는 Window10의 VSCode, Python3.11.0로 작성되었습니다. 해리스 코너 검출(Harris Corner Detection)해리스 코너 검출은 이미지에서 코너를 검출하는 기법으로, 주로 특징점 검출에 사용된다.import cv2import numpy as npimage = cv2.imread("window.jpg")gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)gray = np.float32(gray)# 해리스 코너 검출dst = cv2.cornerHarris(gray, blockSize=2, ksize=3, k=0.04)# 결과 이미지를 복사하여 코너 표시image[dst > 0.01 * dst.max()] = [0, 0, 255] # 코.. [Computer Vision] 객체 검출과 응용 👀 본 예제는 Window10의 VSCode, Python3.11.0로 작성되었습니다. 객체 검출(Object Detecting)입력 영상에서 작은 크기의 부분 영상을 위치를 찾아 내고 싶은 경우 템플릿 매칭(Template Matching) 기법을 사용한다. 템플릿은 찾고자 하는 대상이 되는 작은 크기의 영상을 의미한다. 템플릿 매칭은 이 템플릿을 입력 영상 전체 영역에 대해 이동하면서 가장 비슷한 위치를 수직적으로 찾아내는 방식이다.유사한 것을 찾는 방식은 템플릿과 입력 영상간의 유사도(Similarity) 또는 비유사도(Dissimilarity)를 계산한다. 유사도 계산 : 템플릿 영상과 비슷한 부분 영상 위치에서 값이 크게 나타남.비유사도 계산 : 템플릿 영상과 비슷한 부분에서 값이 작게 나타.. [Computer Vision] 레이블링과 외각선 검출 👀 본 예제는 Window10의 VSCode, Python3.11.0로 작성되었습니다. 레이블링(Labeling)이전 포스트에서 영상의 이진화를 통해 주요 객체와 배경을 구분할 수 있었다. 이렇게 객체와 배경을 구분 후 다시 각각의 객체를 구분하고 분석하는 작업이 필요하다. 이 작업을 수행하는 것을 레이블링(Labeling)이라고 한다.영상 내에 존재하는 객체 픽셀 집합에 고유 번호를 매기는 작업으로 연결된 구성 요소 레이블링(Connected Components Labeling)이라고도 한다. 이를 통해 각 객체의 위치, 크기 등 정보를 추출하는 작업은 객체 인식을 위한 전처리 과정으로 사용된다. 영상의 레이블링은 일반적으로 이진화도니 영상에서 수행된다. 이때 검은색 픽셀은 배경으로 간주하고, 흰색.. [Computer Vision] 영상의 이진화와 모폴로지 👀 본 예제는 Window10의 VSCode, Python3.11.0로 작성되었습니다. 이진화(Binarization)영상의 이진화(Binarization)는 영상의 각 픽셀을 두 개의 부류로 나누는 작업이다. 이를 통해 영상의 주요 객체 영역과 배경 영역으로 나누거나 또는 영상에서 중요도가 높은 관심 영역과 그렇지 않은 비관심 영역으로 구분하는 용도로 이진화가 사용될 수 있다. 이진화가 진행되면 영상의 픽셀값은 0또는 255로 구성되며 흰색 또는 검은색 픽셀로만 구성된다.] 이진화를 하는 방법은 특정값을 기준으로 크면 255, 작은 경우 0으로 설정한다.import cv2if __name__ == "__main__": im = cv2.imread("test.png") shape = (int.. 이전 1 2 3 다음 목록 더보기