Pandas를 활용하면 데이터프레임을 손쉽게 생성할 수 있으며, subplot() 메서드를 통해 figure(그림)와 axes(축) 객체를 만들 수 있습니다. 이어서 ax.scatter() 메서드를 사용하면 원하는 산점도를 간단하게 완성할 수 있습니다. 구현 단계 학생 수를 담은 리스트를 준비합니다. 학생들이 취득한 점수 목록을 리스트로 만듭니다. 각 산점도 점의 색상을 표현하기 위해 색상 정보가 담긴 리스트를 준비합니다. Pandas를 이용해 데이터프레임의 축에 해당하는 데이터를 구성합니다. subplots() 메서드로 fig와
이 튜토리얼에서는 OpenCV의 rectangle() 함수를 사용하여 이미지 위에 사각형을 그리는 방법을 알아봅니다. 이 함수는 시작 좌표(start point), 종료 좌표(end point), 색상(color), 선 두께(thickness), 그리고 대상 이미지 자체를 매개변수로 받아 지정된 영역에 사각형을 그려줍니다.원본 이미지알고리즘1단계: cv2 모듈을 임포트한다. 2단계: imread() 함수로 이미지를 불러온다. 3단계: 사각형의 시작 좌표를 정의한다. 4단계: 사각형의 종료 좌표를 정의한다. 5단계: 색상(BGR 값)
이 글에서는 OpenCV의 cv2.circle() 함수를 사용하여 이미지 위에 원을 그리는 방법을 알아봅니다. 이 함수는 이미지 처리에서 특정 영역을 강조하거나 시각화할 때 매우 유용하게 활용됩니다.원본 이미지알고리즘1단계: OpenCV를 임포트합니다.2단계: 원의 반지름(radius)을 정의합니다.3단계: 원의 중심 좌표(center)를 정의합니다.4단계: 원의 색상(color)을 정의합니다. 색상은 BGR 순서의 튜플로 지정합니다.5단계: 선 두께(thickness)를 정의합니다.6단계: 위에서 정의한 인자들과 이미지를 함께 c
이번 튜토리얼에서는 OpenCV에서 제공하는 fillPoly() 함수를 사용하여 채워진 다각형(filled polygon)을 그리는 방법을 알아봅니다. 이 함수는 이미지 객체와 다각형의 꼭짓점 좌표들을 입력으로 받아, 해당 좌표들로 연결된 영역을 지정한 색상으로 꽉 차게 채워줍니다.fillPoly() 함수란?cv2.fillPoly()는 하나 이상의 다각형 윤곽선 내부를 채우는 데 사용되는 함수입니다. 주요 매개변수는 다음과 같습니다.img: 다각형을 그릴 대상 이미지pts: 다각형 꼭짓점 좌표 배열의 목록 (여러 개의 다각형 동시
이 튜토리얼에서는 OpenCV의 putText() 함수를 사용하여 이미지 위에 텍스트를 작성하는 방법을 알아봅니다. 이 함수는 대상 이미지, 글꼴 종류, 텍스트가 배치될 좌표, 색상, 선 두께 등 다양한 매개변수를 입력받아 원하는 위치에 문자열을 그려줍니다.원본 이미지알고리즘1단계: cv2 모듈을 임포트합니다. 2단계: putText() 함수에 사용할 매개변수들을 정의합니다. 3단계: 정의한 매개변수들을 putText() 함수에 전달합니다. 4단계: 결과 이미지를 화면에 출력합니다.putText() 함수의 주요 매개변수image:
이 글에서는 OpenCV에서 제공하는 blur() 함수를 사용하여 이미지를 흐리게(블러) 처리하는 방법을 알아봅니다. blur() 함수는 정규화된 박스 필터(normalized box filter)를 이미지에 적용하여 픽셀 값을 부드럽게 만들어 주는 대표적인 스무딩(smoothing) 기법입니다.알고리즘 단계1단계: OpenCV 라이브러리를 임포트합니다.2단계: 처리할 이미지를 불러옵니다.3단계: 커널(kernel) 크기를 설정합니다.4단계: blur() 함수를 호출하고 이미지와 커널 크기를 매개변수로 전달합니다.5단계: 결과 이미
이 프로그램에서는 OpenCV의 GaussianBlur() 함수를 사용하여 이미지를 흐리게(블러) 처리하는 방법을 알아봅니다. 가우시안 블러(Gaussian Blur)는 가우시안 함수를 이용해 이미지를 부드럽게 만드는 기법으로, 그래픽 소프트웨어에서 이미지의 노이즈를 제거하거나 디테일을 줄이는 용도로 널리 활용됩니다.처리 순서1단계: cv2 모듈을 임포트합니다.2단계: 원본 이미지를 불러옵니다.3단계: GaussianBlur 함수를 적용합니다. 이때 이미지와 커널 크기를 매개변수로 전달합니다.4단계: 결과 이미지를 화면에 표시합니다
Matplotlib으로 그래프를 그릴 때 여러 개의 선을 한 번에 플롯하는 경우가 많습니다. 이때 plt.legend() 함수를 사용하면 범례를 추가할 수 있는데, 리스트 형태로 원하는 값만 전달하면 특정 항목만 선택적으로 표시할 수 있습니다.구현 단계plt.xlabel() 메서드로 X축 라벨을 설정합니다.plt.ylabel() 메서드로 Y축 라벨을 설정합니다.plot() 메서드의 인자로 리스트를 전달하여 여러 개의 선을 그립니다.loc 매개변수는 범례의 위치를 지정하며, frameon 플래그를 True로 설정하면 범례 테두리가 표
이 튜토리얼에서는 OpenCV 라이브러리의 medianBlur() 함수를 사용하여 이미지에 블러(흐림) 효과를 적용하는 방법을 알아봅니다. 미디언 블러링(Median Blurring)은 이미지의 노이즈를 제거하면서도 가장자리(edge)를 비교적 잘 보존할 수 있는 필터링 기법으로, 소금-후추(salt-and-pepper) 노이즈 제거에 특히 효과적입니다.원본 이미지알고리즘1단계: cv2 모듈을 임포트합니다.2단계: 이미지 파일을 읽어옵니다.3단계: cv2.medianBlur() 함수에 이미지와 커널 크기를 전달합니다.4단계: 결과
이 프로그램에서는 OpenCV의 erode() 함수를 사용하여 이미지에 침식(Erosion) 연산을 적용합니다. 이미지 침식이란 말 그대로 이미지의 형태를 축소시키는 것을 의미합니다.침식 연산의 기본 원리는 다음과 같습니다. 커널(kernel) 영역 내에 있는 픽셀 중 하나라도 값이 0이라면, 해당 커널에 포함된 모든 픽셀이 0으로 설정됩니다. 이 과정을 통해 이미지의 밝은 영역(전경)이 점차 줄어들며 경계가 깎이는 효과가 나타납니다.침식 함수를 이미지에 적용하기 전에는 한 가지 전제 조건이 필요합니다. 바로 이미지가 그레이스케일(
이 글에서는 OpenCV 라이브러리의 dilate() 함수를 사용하여 이미지를 확장(팽창, Dilation)하는 방법을 알아봅니다. 팽창 연산은 이미지 속 객체의 경계에 픽셀을 추가하는 모폴로지(Morphology) 기법으로, 이미지가 사방으로 넓어지는 효과를 만듭니다.원본 이미지알고리즘이미지 팽창 처리는 다음 순서로 진행됩니다.1단계: cv2와 numpy 모듈을 임포트한다.2단계: cv2.imread() 함수로 이미지를 불러온다.3단계: np.ones() 함수를 사용해 커널(kernel)을 정의한다.4단계: 이미지와 커널을 dil
Pandas를 활용하면 데이터프레임(DataFrame)을 생성하고 인덱스를 datetime 타입으로 손쉽게 설정할 수 있습니다. 여기에 gcf().autofmt_xdate() 함수를 함께 사용하면 X축에 표시되는 날짜 라벨이 겹치지 않도록 자동으로 기울기와 간격을 조정해 줍니다.구현 단계날짜 문자열 리스트를 만들고 pd.to_datetime()을 사용하여 datetime 타입으로 변환합니다.플롯에 사용할 데이터를 준비합니다. 예: data = [1, 2, 3]DataFrame() 객체를 생성합니다.생성한 데이터프레임의 value 컬
이 글에서는 OpenCV를 사용하여 이미지에 열기(Opening) 연산을 수행하는 방법을 알아봅니다. 열기 연산은 이미지 전경(foreground)에 있는 작은 객체나 노이즈를 제거하여 배경과 합쳐 주는 모폴로지 기법입니다. 또한 이미지 속에서 특정 형태를 찾아내는 용도로도 활용할 수 있습니다.열기 연산은 이름 그대로 침식(Erosion)을 먼저 수행한 뒤 팽창(Dilation)을 이어서 실행하는 과정으로 정의됩니다. OpenCV에서는 cv2.morphologyEx(image, cv2.MORPH_OPEN, kernel) 함수 하나만
이 튜토리얼에서는 OpenCV의 cv2.morphologyEx() 함수를 사용하여 이미지에 닫기(Closing) 연산을 적용하는 방법을 알아봅니다. 닫기 연산은 팽창(Dilation) 후 침식(Erosion)을 순차적으로 수행하는 모폴로지 기법으로, 전경(foreground) 객체 내부의 작은 구멍이나 틈을 메워서 배경의 작은 빈 공간을 전경으로 변환해 줍니다. 또한 이 기법은 이미지 속에서 특정 형태를 검출하는 용도로도 활용할 수 있습니다. 닫기 연산에 사용되는 핵심 함수 시그니처는 다음과 같습니다. cv2.morphologyE
이 프로그램에서는 Python의 Pillow 라이브러리를 사용하여 이미지의 각 채널(밴드)에 있는 모든 픽셀 값의 중앙값(median)을 계산하는 방법을 알아봅니다.일반적인 RGB 컬러 이미지는 빨강(Red), 초록(Green), 파랑(Blue)의 세 가지 색상 채널로 구성되어 있습니다. 따라서 중앙값을 계산하면 각 채널별 중앙값이 담긴 길이 3의 리스트를 얻게 됩니다.중앙값은 모든 픽셀 값을 크기 순으로 정렬했을 때 정확히 가운데 위치하는 값으로, 평균값보다 극단적인 이상치(outlier)의 영향을 덜 받는 통계적 지표입니다. 이
Matplotlib으로 그래프를 그릴 때 축의 눈금 값이 크거나 작으면 자동으로 지수 형식(과학적 표기법)으로 변경되는 경우가 있습니다. 이럴 때 ticklabel_format() 메서드에 style=plain 옵션을 사용하면 눈금 레이블이 지수 형식으로 변환되는 것을 막을 수 있습니다.구현 단계plot() 메서드에 두 개의 리스트를 전달하여 선 그래프를 그립니다.ticklabel_format() 메서드를 style=plain 옵션과 함께 호출합니다. 매개변수가 설정되지 않으면 포매터(formatter)의 해당 속성은 기존 상태로
matplotlib의 FuncAnimation 메서드를 활용하면 개별 프레임을 일일이 파일로 저장하는 번거로운 과정 없이도 곧바로 동영상 형태의 애니메이션을 만들 수 있습니다. 이 글에서는 입자(particle)의 위치를 지속적으로 갱신하는 사용자 정의 함수 update를 작성하고, 마지막에 scatter 객체를 반환하도록 구성하는 방법을 살펴보겠습니다. 구현 단계 입자의 초기 위치(position), 속도(velocity), 힘(force), 크기(size)를 설정합니다. figsize=(7, 7) 옵션으로 새 figure를 생
Matplotlib에서 그래프 레이블에 줄바꿈을 넣어 시각화하는 방법을 소개합니다. 아래 예제 코드는 \n 이스케이프 문자를 활용해 X축과 Y축 레이블에 개행을 삽입하고, cycler를 이용해 여러 선의 색상을 지정하는 전체 과정을 보여줍니다.구현 단계\n을 사용하여 다이어그램의 X축과 Y축 레이블에 줄바꿈을 설정합니다. 레이블 문자열 안에 \n을 넣으면 해당 위치에서 텍스트가 다음 줄로 넘어갑니다.rcParams를 통해 축(axes)의 배경색(facecolor) 등 현재 스타일 설정값을 지정합니다.cycler를 사용해 선 그룹의
이 튜토리얼에서는 OpenCV를 사용해 이미지에 TopHat(탑햇) 연산을 적용하는 방법을 알아봅니다.TopHat 연산이란?TopHat 연산은 형태학적(morphological) 연산의 한 종류로, 입력 이미지에서 작은 요소나 세부 디테일을 추출하는 데 사용됩니다. 특히 어두운 배경 속 밝은 객체를 강조하는 데 효과적이며, 조명 불균형 보정이나 작은 결함 검출 등에도 활용됩니다.OpenCV에서는 cv2.morphologyEx(image, cv2.MORPH_TOPHAT, kernel) 함수를 통해 이 연산을 간단히 수행할 수 있습니다
이 글에서는 OpenCV를 사용하여 이미지에 블랙햇(BlackHat) 연산을 적용하는 방법을 알아봅니다. 블랙햇 변환은 형태학적(morphological) 연산 중 하나로, 밝은 배경 속에 있는 어두운 관심 객체를 강조할 때 유용하게 사용됩니다. 구현에는 morphologyEx(image, cv2.MORPH_BLACKHAT, kernel) 함수를 활용합니다.원본 이미지알고리즘 단계블랙햇 연산은 다음 순서로 진행됩니다.cv2 모듈을 임포트(import)합니다.대상 이미지를 불러옵니다.커널(kernel)의 크기를 정의합니다.이미지와 커