전체 글 30

선형 방정식 시스템의 해 찾기

# 선형 방정식 시스템의 해 찾기 함수 import cv2 import numpy as np src1 = np.array([[9, 2], [1, 1]], dtype=np.double) src2 = np.array([38, 5], dtype=np.double) dst = cv2.solve(src1, src2, flags=cv2.DECOMP_LU) print(dst) (2,2) 크기의 정방 행렬 src1과 (2,1) 크기의 벡터 xrc2의 최적 벡터 x를 구함. 가우스 소거법을 이용해 해를 찾으며, 튜플 형태로 결과 반환. 성공시 True와 array배열과 함께 최적 벡터 x가 반환 실패시 False와 정확하지 않는 array 배열 반환

영상처리/OpenCV 2022.06.08

색상 공간 변환

본래의 색상 공간에서 다른 색상 공간으로 변환할 때 사용. 색상 공간 변환 함수는 데이터 타입을 같게 유지하고 채널을 변환. 출력된 이미지는 입력된 이미지의 이미지 크기와 정밀도가 동일한 배열이 됨. # 색상 공간 변환 함수 dst = cv2.cvtColor( src, code, dstCn=None ) 색상 공간 변환 함수는 입력 이미지(src)에 색상 변환 코드(code)를 적용해 출력 이미지(dst)로 반환. 색상 변환코드를 사용해 BGR 색상 공간을 RGBA 색상 공간으로 변환하거나 그레이스케일, HSV, CIE Luv 등 단일 채널부터 3/4채널의 색상 공간으로도 변환 가능. 출력 채널(dstCn)은 출력 이미지(dst)에 필요한 채널 수를 설정. 일반적으로 출력 채널에 값을 할당하지 않아 기본값..

영상처리/OpenCV 2022.06.08

트랙바 생성

프로그램 개발 진행 시 알고리즘에서 사용되는 메서드나 함수 등의 매개 변수나 인수의 값을 조절하면서 최적의값을 찾기 위해 여러 번 테스트 진행 -> 반복되는 변경 작업이나 컴파일/빌드 등으로 불필요한 작업 대폭 늘어남. 트랙바 : 일종의 스크롤바로 슬라이더 바의 형태를 지님. 일정 범위 내의 값을 변경할 때 주로 사용하며, 적절한 임곗값을 찾거나 변경하기 위해 사용 # 트랙 바 생성 함수 cv2.createTrackbar( trackbarName, windowName, value, count, onChange ) 트랙바 생성함수는 트랙바 이름(trackbarName)을 정의하고 사전에 정의된 윈도우 이름(windowName)에 부착. 값(value)은 트랙 바의 초기 슬라이더 위치, 변경할때마다 갱신 최..

영상처리/OpenCV 2022.06.08

각종 그리기 함수

직선 그리기 이미지나 영상 위에 단순한 선을 그림. 두 점을 이어 검출결과를 인식하기 쉽게 표시하거나 이미지의 특정 영역을 보정하기 위해 사용 # 직선 그리기 함수 cv2.line( img, pt1, pt2, color, thickness = None, lineType = None shift = None ) 이미지(img) 위에 시작좌표(pt1)부터 도착좌표(pt2) 까지의 직선을 그림 색상(color)은 bgr 형식이며, 설정된 두께(thinckness)로 그려짐. 선형타입(lineType)을 설정하여 연결성을 택하고, 비트시프트(shift)에는 실숫값으로 처리할 좌표(pt)의 비트 값을 할당. 사각형 그리기 이미지나 영상 위에 단순한 사각형을 그림. 영역을 설정하기 위한 변수값으로 활용하거나, 검출된..

영상처리/OpenCV 2022.06.08

도형 그리기

도형 그리기 : 영상이나 이미지 위에 그래픽을 그리는 것. 주로 검출 결과를 시각적으로 표시하는 데 사용. 모든 정밀도와 채널에 대해 작동하며, 이미지 위에 도형을 그림 행렬(이미지)이 아닌 배열에도 도형을 그릴 수 있으며, 도형이 그려진 위치의 요소값을 그리기 형태의 배열 값으로 변경 선형타입 : 도형을 그랠 때 어떤 유형의 선으로 그릴지 결정하는 인수 브레젠험 알고리즘 (Bresenham’s algorithm) 방식 -> 컴퓨터 그래픽 분야에서 개발된 최초의 알고리즘 중 하나. 실수 연산이 아닌 정수 연산으로 대체하기 위한 알고리즘. 일반적으로 직선의 방정식을 사용하면 두 점 사이에 있는 모든 좌표를 알 수 있으나 실수 형태의 소수점이 발생. 이미지는 래스터 형식의 사각형 격자 구조로 이뤄진 행렬이며..

영상처리/OpenCV 2022.06.08

이미지 연결

서로 다른 이미지를 이어 붙여 하나의 이미지로 만드는 기능. 서로 다른 이미지를 병합해 하나의 이미지로 만들거나, 알고리즘 적용 전 이미지와 후 이미지를 상호비교하기 위해 사용 # 수평 이미지 연결 함수 dst = cv2.hconcat( src ) # 수직 이미지 연결 함수 dst = cv2.vconcat( src ) 이미지 연결 함수 : 입력 이미지 배열(src)을 수평 또는 수직 방향으로 연결해 출력 이미지(dst) 반환. 연결할 이미지는 같은 채널과 정밀도를 가져야 하며, 다를 경우 연결 불가 수평 이미지 연결 함수 : 입력된 이미지들이 동일한 행(높이)을 가져야 함 수직 이미지 연결 함수 : 입력된 이미지들이 동일한 열(너비)을 가져야 함 반환 이미지 : 원본 이미지와 동일한 채널, 정밀도 및 원..

영상처리/OpenCV 2022.06.07

동영상 출력

OpenCV를 이용하면 동영상 파일에서 순차적으로 프레임을 읽어 이미지 형태로 출력 동영상 파일을 읽으려면 컴퓨터에 동영상 코덱을 읽을 수 있는 라이브러리 설치 필요 FFMPEG를 지원하므로 AVI나 MP4 등 다양한 형식의 동영상 파일을 읽을 수 있음 capture = cv2.VideoCapture(filename) 이미지 입력 함수와 동일한 기능을 하지만 동영상은 클래스를 사용 단 ,이미지 입력 함수와 다르게 경로가 올바르지 않거나 코덱을 알 수 없을 때도 성공 여부를 반환하지 않음. 그러므로 별도의 함수를 만들어 동영상 파일을 열지 못했을 때 파일의 상태값을 보여줌. 파일명(filename) : 경로를 포함한 입력 파일의 이름 import cv2 capture = cv2.VideoCapture("S..

영상처리/OpenCV 2022.06.07

마우스 콜백

마우스 콜백 : 윈도우에 마우스 이벤트가 발생했을 때, 특정한 함수에 이벤트를 전달해 실행 콜백(Callback) 함수 : 매개변수를 통해 다른 함수를 전달받고, 이벤트가 발생할 때 매개변수에 전달된 함수를 호출하는 역할. 즉, 이벤트가 발생하면 다른 함수를 실행하는 함수 OpenCV에는 HighGUI를 이용해 윈도우를 생성해서 화면에 이미지를 출력하는 프로그램을 작성 가능하므로 윈도우에서 마우스 이벤트를 받아 상호작용 할 수 있음. cv2.setMouseCallback( windowName, onMouse, param = None ) 사전에 정의된 윈도우 이름(windowName)에 마우스 콜백을 설정하고, 콜백함수(onMouse) 전달. 설정된 윈도우에만 선언한 콜백 함수가 실행. 마우스 이벤트 데이..

영상처리/OpenCV 2022.06.07

이미지 출력

OpenCV는 HighGUI라 불리는 라이브러리를 지원. 이를 이용하면 윈도우를 생성해 화면에 이미지를 출력하는 프로그램 작성 가능 cv2.imshow( winname, ndarray ) 이미지 행렬이 존재한다면 이미지 출력 함수를 사용해 윈도우에 출력 가능 winname : 윈도우의 이름 ndarray 매개변수 : 이미지 행렬 이미지 출력 함수는 winname의 이름을 갖는 윈도우에 이미지를 띄움 윈도우의 속성을 변경할 때는 변수가 아닌 winname에 따라 윈도우의 속성 적용 즉, winname이 변수와 비슷한 역할을 함. import cv2 src = cv2.imread("E:\OpenCV\example\images\OpenCV_Logo.png", cv2.IMREAD_GRAYSCALE) cv2.na..

영상처리/OpenCV 2022.06.07

이미지 입력

OpenCV에서 주로 다루는 이미지 형식 : JPG, PNG 등의 래스터 그래픽스 이미지 파일 포맷 래스터 그래픽스 : 비트맵 이미지를 뜻하며, 격자판의 형태로 각 격자마다 화소의 데이터가 담겨있는 이미지 파일 포맷 OpenCV는 래스터 그래픽스 이미지 파일 포맷을 쉽게 불러올 수 있는 별도의 함수를 제공 -> 불러온 압축 해제된 이미지 데이터 구조에 필요한 메모리 할당과 같은 복잡한 작업을 처리하며, 파일 시그니처를 읽어 적절한 코덱을 결정 파일 시그니처 : 파일 매직 넘버(File magic number) 라고도 하며, 이미지를 불러올 때는 확장자를 확인하는 방식이 아닌 파일 시그니처를 읽어 파일의 포맷을 분석함. ex) PNG 확장자의 경우 89 50 4E 47… 형태로 파일 헤더에 포함되어 있음 ..

영상처리/OpenCV 2022.06.07