Open CV란?
OpenCV(Open Source Computer Vision Library)는 컴퓨터 비전과 머신러닝을 위한 오픈소스 라이브러리입니다. 주요 특징과 기능은 다음과 같습니다:
import numpy as np
import cv2
import matplotlib.pyplot as plt
# 1차원 배열 생성 및 연산
list1 = [1, 2, 3, 4, 5]
arr1 = np.array(list1)
print("arr1:", arr1)
print("arr1 + 1:", arr1 + 1)
# 리스트 연산으로 값 증가
list2 = [x + 1 for x in list1]
print("list2:", list2)
# 2차원 배열 생성 및 제곱 연산
list2_2d = [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]]
arr2 = np.array(list2_2d)
print("arr2:", arr2)
print("arr2 ** 2:", arr2 ** 2)
# 배열 속성 확인
print("arr2.shape:", arr2.shape)
print("arr2.size:", arr2.size)
print("arr2.ndim:", arr2.ndim)
print("arr2.dtype:", arr2.dtype)
# 1에서 50까지 1차원 배열 생성 후 2차원으로 reshape
arr3 = np.arange(1, 51)
rs_arr3 = arr3.reshape(5, 10)
print("rs_arr3:\\n", rs_arr3)
# 이미지 데이터 불러오기 (컬러)
img_path = './data/po.jpg'
img_color = cv2.imread(img_path, cv2.IMREAD_COLOR)
img_color = cv2.cvtColor(img_color, cv2.COLOR_BGR2RGB)
plt.figure(figsize=(4, 4))
plt.imshow(img_color)
plt.title("Color Image")
plt.axis('off')
plt.show()
# 이미지 속성 확인
print("img_color.ndim:", img_color.ndim)
print("img_color.shape:", img_color.shape)
print("img_color.min():", img_color.min())
print("img_color.max():", img_color.max())
# 흑백으로 처리
img_gray = cv2.imread(img_path, cv2.IMREAD_COLOR)
img_gray = cv2.cvtColor(img_gray, cv2.COLOR_BGR2GRAY)
plt.figure(figsize=(4, 4))
plt.imshow(img_gray, cmap='gray')
plt.title("Grayscale Image")
plt.axis('off')
plt.show()
print("img_gray.ndim:", img_gray.ndim)
print("img_gray.shape:", img_gray.shape)
# 1차원 배열 인덱싱, 슬라이싱 예제
arr = np.arange(10, 61, 10)
print("arr:", arr)
print("arr[3]:", arr[3])
print("arr[-1]:", arr[-1])
print("arr[[3, 5]]:", arr[[3, 5]])
print("arr[1:5]:", arr[1:5])
print("arr[0:3:2]:", arr[0:3:2])
# 2차원 배열로 변환 후 접근
arr2d = arr.reshape(2, 3)
print("arr2d:\\n", arr2d)
print("arr2d[0, 1]:", arr2d[0, 1])
print("arr2d[1, :2]:", arr2d[1, :2])
# 특정 간격의 요소 슬라이싱
arr3_reshaped = np.arange(1, 51).reshape(5, 10)
print("arr3_reshaped[:, 0:10:3]:\\n", arr3_reshaped[:, 0:10:3])
# 불리언 인덱싱 예제
np.random.seed(1)
bool_arr = np.random.choice([True, False], size=10)
tmp_data = np.arange(10)
print("bool_arr:", bool_arr)
print("tmp_data:", tmp_data)
print("tmp_data[bool_arr]:", tmp_data[bool_arr])
# 성적 데이터 생성 후 조건에 맞는 데이터 접근
np.random.seed(7)
score_arr = np.random.randint(40, 101, size=8)
stu_num = np.arange(1, 9)
print("score_arr:", score_arr)
print("stu_num:", stu_num)
print("scores >= 75:", score_arr[score_arr >= 75])
print("count >= 75:", score_arr[score_arr >= 75].size)
print("stu_num for scores >= 75:", stu_num[score_arr >= 75])
# 이미지 내 얼굴 부분 추출 예시 (좌표는 예시이며 이미지에 따라 조정 필요)
plt.figure(figsize=(4, 4))
plt.imshow(img_gray[75:225, 120:250], cmap='gray')
plt.title("Cropped Region")
plt.axis('off')
plt.show()