import cv2 | OpenCV 가져오기 |
img = cv2.imread("image.jpg") | 이미지 읽기 (BGR) |
cv2.imread("image.jpg", cv2.IMREAD_GRAYSCALE) | 그레이스케일로 읽기 |
cv2.imwrite("output.jpg", img) | 이미지 저장 |
cv2.imshow("Window", img) | 이미지 표시 |
cv2.waitKey(0) | 키 입력 대기 |
cv2.destroyAllWindows() | 창 닫기 |
img.shape | (높이, 너비, 채널) |
img.dtype | 데이터 타입 |
img.size | 전체 픽셀 수 |
img[y, x] | 픽셀 접근 (BGR) |
img[y1:y2, x1:x2] | ROI (관심 영역) |
b, g, r = cv2.split(img) | 채널 분리 |
cv2.merge([b, g, r]) | 채널 병합 |
cv2.cvtColor(img, cv2.COLOR_BGR2RGB) | BGR에서 RGB로 |
cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) | BGR에서 그레이스케일로 |
cv2.cvtColor(img, cv2.COLOR_BGR2HSV) | BGR에서 HSV로 |
cv2.cvtColor(img, cv2.COLOR_BGR2LAB) | BGR에서 LAB로 |
cv2.cvtColor(img, cv2.COLOR_GRAY2BGR) | 그레이스케일에서 BGR로 |
cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY) | 이진 임계처리 |
cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU) | 오츠 임계처리 |
cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 11, 2) | 적응형 임계처리 |
cv2.inRange(hsv, lower, upper) | 색상 범위 마스크 |
cv2.resize(img, (width, height)) | 이미지 리사이즈 |
cv2.resize(img, None, fx=0.5, fy=0.5) | 배율로 스케일 |
cv2.rotate(img, cv2.ROTATE_90_CLOCKWISE) | 90° 회전 |
cv2.flip(img, 1) | 수평 뒤집기 |
cv2.flip(img, 0) | 수직 뒤집기 |
cv2.warpAffine(img, M, (w, h)) | 아핀 변환 |
cv2.warpPerspective(img, M, (w, h)) | 원근 변환 |
cv2.getRotationMatrix2D(center, angle, scale) | 회전 행렬 |
cv2.getAffineTransform(pts1, pts2) | 아핀 행렬 |
cv2.getPerspectiveTransform(pts1, pts2) | 원근 행렬 |
cv2.blur(img, (5, 5)) | 평균 블러 |
cv2.GaussianBlur(img, (5, 5), 0) | 가우시안 블러 |
cv2.medianBlur(img, 5) | 중앙값 블러 |
cv2.bilateralFilter(img, 9, 75, 75) | 양방향 필터 |
cv2.Canny(img, 100, 200) | 캐니 에지 검출 |
cv2.Sobel(img, cv2.CV_64F, 1, 0) | 소벨 X |
cv2.Sobel(img, cv2.CV_64F, 0, 1) | 소벨 Y |
cv2.Laplacian(img, cv2.CV_64F) | 라플라시안 |
kernel = np.ones((5,5), np.uint8) | 커널 생성 |
cv2.erode(img, kernel, iterations=1) | 침식 |
cv2.dilate(img, kernel, iterations=1) | 팽창 |
cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel) | 열기 (침식 + 팽창) |
cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel) | 닫기 (팽창 + 침식) |
cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel) | 형태학적 그래디언트 |
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) | 윤곽선 찾기 |
cv2.drawContours(img, contours, -1, (0,255,0), 2) | 모든 윤곽선 그리기 |
cv2.contourArea(cnt) | 윤곽선 면적 |
cv2.arcLength(cnt, True) | 윤곽선 둘레 |
cv2.approxPolyDP(cnt, epsilon, True) | 다각형 근사 |
cv2.boundingRect(cnt) | 경계 사각형 |
cv2.line(img, pt1, pt2, color, thickness) | 선 그리기 |
cv2.rectangle(img, pt1, pt2, color, thickness) | 사각형 그리기 |
cv2.circle(img, center, radius, color, thickness) | 원 그리기 |
cv2.ellipse(img, center, axes, angle, 0, 360, color) | 타원 그리기 |
cv2.polylines(img, [pts], True, color, thickness) | 다각형 그리기 |
cv2.putText(img, text, org, font, scale, color, thickness) | 텍스트 그리기 |
orb = cv2.ORB_create() | ORB 검출기 생성 |
kp, des = orb.detectAndCompute(img, None) | 검출 및 계산 |
cv2.drawKeypoints(img, kp, None) | 키포인트 그리기 |
sift = cv2.SIFT_create() | SIFT 생성 |
bf = cv2.BFMatcher() | 무차별 매처 |
matches = bf.match(des1, des2) | 기술자 매칭 |
cv2.HoughLines(edges, 1, np.pi/180, 200) | 허프 직선 |
cv2.HoughLinesP(edges, 1, np.pi/180, 100, minLineLength, maxLineGap) | 확률적 허프 직선 |
cv2.HoughCircles(gray, cv2.HOUGH_GRADIENT, 1, 20) | 허프 원 |
cap = cv2.VideoCapture(0) | 웹캠 열기 |
cap = cv2.VideoCapture("video.mp4") | 비디오 파일 열기 |
ret, frame = cap.read() | 프레임 읽기 |
cap.get(cv2.CAP_PROP_FPS) | FPS 얻기 |
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640) | 너비 설정 |
cap.release() | 캡처 해제 |
fourcc = cv2.VideoWriter_fourcc(*'XVID') | 비디오 코덱 |
out = cv2.VideoWriter('output.avi', fourcc, 20.0, (640,480)) | 작성기 생성 |
out.write(frame) | 프레임 쓰기 |
out.release() | 작성기 해제 |