목록Python/OpenCV (11)
K 개발자
어핀 변환 어핀 변환(affine transform)은 사실 이동, 확대/축소, 회전을 포함하는 변환으로 직선, 길이의 비율, 평행성을 보존하는 변환을 말한다. (어핀 변환 링크) 어핀 변환의 이런 성질 때문에 변환 전과 후의 3개의 점을 짝 지어 매핑할 수 있다면 변환행렬을 거꾸로 계산할 수 있는데, OpenCV는 cv2.getAffineTransform() 함수로 이 기능을 제공한다. matrix = cv2.getAffineTransform(pts1, pts2) pts1 : 변환 전 영상의 좌표 3개, 3 × 2 NumPy 배열(float32) pts2 : 변환 후 영상의 좌표 3개, pts1과 동일 matrix : 변환행렬 반환, 2 × 3 행렬 원근 변환 OpenCV는 변환 전과 후를 짝짓는 4개..
이동 dst = cv2.warpAffine(src, mtrx, dsize [, dst, flags, borderMode, borderValue]) src : 원본 영상, NumPy 배열 mtrx : 2×3 변환행렬, NumPy 배열, dtype = float32 dsize : 결과 이미지 크기, tuple(width, height) flags : 보간법 알고리즘 선택 플래그 cv2.INTER_LINEAR : 기본 값, 인접한 4개 픽셀 값에 거리 가중치 사용 cv2.INTER_NEAREST : 가장 가까운 픽셀 값 사용 cv2.INTER_AREA : 픽셀 영역 관계를 이용한 재샘플링 cv2.INTER_CUBIC : 인접한 16개 픽셀 값에 거리 가중치 사용 cv2.INTER_LANCZOS4 : 인접한 8..
히스토그램 계산과 표시 영상 분야에서의 히스토그램은 전체 영상에서 픽셀 값이 1인 픽셀이 몇 개이고 2인 픽셀이 몇 개이고 하는 식으로 픽셀 값이 255인 픽셀이 몇 개인지까지 세는 것을 말한다. 그렇게 하는 이유는 전체 영상에서 픽셀들의 색상이나 명암의 분포를 파악하기 위해서이다. cv2.calcHist(img, channel, mask, histSize, ranges) img : 입력 영상, [img]처럼 리스트로 감싸서 표현 channel : 처리할 채널, 리스트로 감싸서 표현 1채널 : [0], 2채널 : [0, 1], 3채널 : [0, 1, 2] mask : 마스크에 지정한 픽셀만 히스토그램 계산 histSize : 계급(bin)의 개수, 채널 개수에 맞게 리스트로 표현 1채널 : [256], ..
영상과 영상의 연산 dest = cv2.add(src1, src2 [, dest, mask, dtype]) : src1과 src2 더하기 src1 : 입력 영상 1 또는 수 src2 : 입력 영상 2 또는 수 dest : 출력 영상 mask : 0이 아닌 픽셀만 연산 dtype : 출력 dtype dest = cv2.substract(src1, src2 [, dest, mask, dtype]) : src1에서 src2를 빼기 모든 인자는 cv2.add() 함수와 동일 dest = cv2.multiply(src1, src2 [, dest, scale, dtype]) : src1과 src2를 곱하기 scale : 연산 결과에 추가 연산할 값 dest = cv2.divide(src1, src2 [, dest,..
스레시홀딩 스레시홀딩(thresholding)이란 여러 점수를 커트라인을 기준으로 합격과 불합격으로 나누는 것처럼 여러 값을 경계점을 기준으로 두 가지 분류로 나누는 것으로, 바이너리 이미지를 만드는 가장 대표적인 방법이다. 전역 스레시홀딩 ret, out = cv2.threshold(img, threshold, value, type_flag) img : NumPy 배열, 변환할 이미지 threshold : 경계 값 value : 경계 값 기준에 만족하는 픽셀에 적용할 값 type_flag : 스레시 홀드 적용 방법 지정 cv2.THRESH_BINARY : px > threshold ? value : 0, 픽셀 값이 경계 값을 넘으면 value를 지정하고, 넘지 못하면 0을 지정 cv2.THRESH_BI..
컬러 스페이스 변환 out = cv2.cvtColor(img, flag) img : NumPy 배열, 변환할 이미지 flag : 변환할 컬러 스페이스, cv2.COLOR_로 시작하는 이름(274개) cv2.COLOR_BGR2GRAY : BGR 컬러 이미지를 그레이 스케일로 변환 cv2.COLOR_GRAY2BGR : 그레이 스케일 이미지를 BGR 컬러 이미지로 변환 cv2.COLOR_BGR2RGB : BGR 컬러 이미지를 RGB 컬러 이미지로 변환 cv2.COLOR_BGR2HSV : BGR 컬러 이미지를 HSV 컬러 이미지로 변환 cv2.COLOR_HSV2BGR : HSV 컬러 이미지를 BGR 컬러 이미지로 변환 cv2.COLOR_BGR2YUV : BGR 컬러 이미지를 YUV 컬러 이미지로 변환 cv2.C..
관심영역 지정 전체 이미지에서 연산과 분석의 대상이 되는 영역만을 지정하고 떼어내는 것을 관심영역(Region Of Interest, ROI)을 지정한다고 한다. ret = cv2.selectROI([win_name,] img [,showCrossHair = True, fromCenter = False]) win_name : ROI 선택을 진행할 창의 이름, str img : ROI 선택을 진행할 이미지, NumPy ndarray showCrossHair : 선택 영역 중심에 십자 모양 표시 여부 fromCenter : 마우시 시작 지점을 영역의 중심으로 지정 ret : 선택한 영역 좌표와 크기(x, y, w, h), 선택을 취소한 경우 모두 0
마우스 이벤트 cv2.setMouseCallback(win_name, onMouse [, param]) : onMouse 함수를 등록 win_name : 이벤트를 등록할 윈도 이름 onMouse : 이벤트 처리를 위해 미리 선언해 놓은 콜백 함수 param : 필요에 따라 onMouse 함수에 전달할 인자 MouseCallback(event, x, y, flags, param) : 콜백 함수 선언부 event : 마우스 이벤트 종류, cv2.EVENT_로 시작하는 상수(12가지) cv2.EVENT_MOUSEMOVE : 마우스 움직임 cv2.EVENT_LBUTTONDOWN : 왼쪽 버튼 누름 cv2.EVENT_RBUTTONDOWN : 오른쪽 버튼 누름 cv2.EVENT_MBUTTONDOWN : 가운데 버튼..