728x90
반응형

분류 전체보기 28

[OpenCV] 이미지 처리 (Haar Cascade)

오늘은 Haar Cascade를 이용해서 detection을 해보자 일단 아래 주소에서 사용하고 싶은 모델 파일을 받아준다.https://github.com/opencv/opencv/tree/master/data/haarcascades opencv/data/haarcascades at master · opencv/opencvOpen Source Computer Vision Library. Contribute to opencv/opencv development by creating an account on GitHub.github.com import cv2import osimport globfrom tqdm import tqdm# 모델 경로base_dir = '/my_dir/models/'face_mode..

OpenCV 2024.08.18

[OpenCV] 이미지 처리 (concat)

오늘은 이미지를 가로나 세로로 붙여보는걸 해보자 import cv2import numpy as np# 이미지 로드image1 = cv2.imread('/my_dir/image1.jpg')image2 = cv2.imread('/my_dir/image2.jpg')# 이미지 크기 조정 (필요에 따라)image1 = cv2.resize(image1, (300, 200))image2 = cv2.resize(image2, (300, 200))# 수평 결합 (각 이미지의 height이 같아야함)concatenated_h_image = cv2.hconcat([image1, image2])# 수직 결합 (각 이미지의 width가 같아야함)concatenated_v_image = cv2.vconcat([image1,ima..

OpenCV 2024.08.18

[OpenCV] 이미지 처리 (색상변환)

오늘 해볼건 opencv로 이미지를 읽어서 rgb, hsv, lab, yuv등으로 변환하는걸 해보자 import cv2# 이미지 로드 (기본적으로 BGR로 로드됨)image_bgr = cv2.imread('path_to_your_image.jpg')# BGR 이미지를 RGB로 변환image_rgb = cv2.cvtColor(image_bgr, cv2.COLOR_BGR2RGB)# BGR 이미지를 HSV로 변환image_hsv = cv2.cvtColor(image_bgr, cv2.COLOR_BGR2HSV)# BGR 이미지를 LAB로 변환image_lab = cv2.cvtColor(image_bgr, cv2.COLOR_BGR2Lab)# BGR 이미지를 YUV로 변환image_yuv = cv2.cvtColor(..

OpenCV 2024.08.18

[OpenCV] 이미지 처리 (Feature Extraction)

1. SIFT (Scale-Invariant Feature Transform)SIFT는 이미지에서 스케일 및 회전에 불변한 특징을 추출하는 데 사용된다. 주로 객체 인식, 매칭, 추적 등에 활용. import cv2# 이미지 불러오기image = cv2.imread('/my_dir/image.jpg', cv2.IMREAD_GRAYSCALE)# SIFT 객체 생성sift = cv2.SIFT_create()# 키포인트와 디스크립터 추출keypoints, descriptors = sift.detectAndCompute(image, None)# 결과를 이미지에 그리기img_with_keypoints = cv2.drawKeypoints(image, keypoints, None)# 결과 출력cv2.imwrite('..

OpenCV 2024.08.18

[OpenCV] 이미지 처리 (GrabCut)

오늘은 opencv에 있는 GrabCut 알고리즘을 사용해보자. GrabCut Algorithm Method:초기 마스크 설정: 사용자는 초기 마스크를 설정하여 이미지의 전경(객체)과 배경을 대략적으로 지정한다. 일반적으로 사각형 영역으로 전경을 지정한다.그래프 모델 생성: 이미지의 픽셀을 노드로 하는 그래프를 생성하고, 각 노드는 전경과 배경 클래스에 연결된다. 이 그래프는 두 개의 가상 노드(전경과 배경)와 연결되어 있다.비용 함수 정의: 각 픽셀에 대해 전경과 배경으로 분류될 비용을 정의한다. 이 비용은 픽셀의 색상 및 주변 픽셀과의 관계를 기반으로 한다.최적화: GrabCut 알고리즘을 사용하여 그래프의 최적 분할을 찾는다. 이 단계에서는 전경과 배경을 최적의 방식으로 분리하는 최적화가 수행된다..

OpenCV 2024.08.18

[OpenCV] 이미지 처리 (Canny)

오늘은 canny edge detector를 이용해 이미지에서 강한 경계 부분을 찾아보는걸 해보자.  import cv2# 이미지 불러오기 (그레이스케일로 변환)image = cv2.imread('/my_dir/image.jpg', cv2.IMREAD_GRAYSCALE)# 가우시안 블러를 적용하여 노이즈 제거 (옵션)blurred = cv2.GaussianBlur(image, (5, 5), 0)# Canny 에지 검출 적용edges = cv2.Canny(blurred, threshold1=50, threshold2=150)# 결과 출력 & 저장cv2.imwrite('/my_dir/edge_image.jpg',edges)cv2.imshow('Original Image', image)cv2.imshow('E..

OpenCV 2024.08.18

[OpenCV] 이미지 처리 (Laplacian)

오늘은 라플라시안을 통해 이미지에 블러 여부를 판단하는 로직을 만들어보자.  라플라시안(Laplacian)이란 무엇인가? - 이미지의 2차 미분을 계산하여 픽셀의 밝기 변화를 강조하는 방법  1차 미분과 경계 검출: 이미지의 밝기 값은 공간적으로 변환한다. 이 변화를 1차 미분하면 밝기 값이 급격히 변하는 위치, 즉 경계(edge)를 찾을 수 있다. 하지만 1차 미분은 밝기 변화의 방향에 민감하며, 노이즈에도 영향을 받을 수 있다.2차 미분과 라플라시안: 라플라시안 변환은 이미지의 2차 미분을 사용한다. 2차 미분은 이미지의 곡률을 측정하며, 밝기 값이 급격히 변하는 위치를 더욱 강조한다. 라플라시안 변환은 이미지에서 경계와 같은 고주파 성분을 추출하는 데 강력한 도구이다. 이 변환을 통해 이미지의 샤프..

OpenCV 2024.08.18

[OpenCV] 이미지 처리 (비디오 crop)

opencv로 비디오를 프레임 이미지로 읽어서 저장하는것까지 해보았는데, 이번엔 그 해당 이미지에 특정 좌표를 그려넣는걸 해보자. import cv2# 비디오 파일 경로video_path = '/my_dir/input_video.mp4'# 출력 비디오 경로output_video_path = '/my_dir/output_video_with_rectangle.mp4'# 비디오 캡처 객체 생성cap = cv2.VideoCapture(video_path)# 원본 비디오의 속성 가져오기width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))fps = cap.get(cv2.CAP_PROP_FPS)# Vi..

OpenCV 2024.08.18

[OpenCV] 이미지 처리 (비디오)

오늘은 opencv를 이용해서 비디오를 읽고 프레임으로 나누는걸 해보자 import cv2import os# 비디오 파일 경로video_path = '/my_dir/input_video.mp4'# 저장할 디렉토리 경로output_dir = '/my_dir/frames/'# 출력 디렉토리 생성os.makedirs(output_dir, exist_ok=True)# 비디오 캡처 객체 생성cap = cv2.VideoCapture(video_path)frame_count = 0while True: # 프레임 읽기 ret, frame = cap.read() # 프레임을 제대로 읽었는지 확인 if not ret: break # 프레임 저장 frame_filename = o..

OpenCV 2024.08.18
728x90
반응형