이미지 처리
-
이미지 처리-10 json으로 영상 데이터 이미지 추출이미지 처리 2023. 7. 4. 17:26
1. 동영상 프레임 단위로 쪼개기 import cv2 import os video_data_path = 'video_sample_data\\video\\C041_A30_SY32_P07_S06_02DAS.mp4' cap = cv2.VideoCapture(video_data_path) img_count = 0 folder_name = video_data_path.split("\\")[-1] folder_name = folder_name.replace(".mp4", "") os.makedirs(f"./AI_hub_frame_dataset/{folder_name}", exist_ok=True) while True: ret, frame = cap.read() if not ret: break if img_count..
-
이미지 처리-9 이미지 증강이미지 처리 2023. 6. 26. 14:58
1. 데이터 증강(data augmentation) ai 모델의 정확도를 높이기 위해서 근본적으로 할 수 있는 것은 ai 모델의 알고리즘을 연구하는 것이다. 하지만 현재 시장에서는 알고리즘 모델이 대부분 고착화되어 있으며 획기적인 방법이 아닌 이상 그렇게 많은 개선이 이루어지지 않는다. 또한 조금의 개선을 위해 대단한 지식과 노력이 필요한 것은 당연한 사실이다. 이러한 성능 개선의 측면에서 가장 쉽게 성능을 증가시킬 수 있는 방법은 학습 데이터의 수를 늘리는 것이다. 데이터를 수집하는 것은 쉬운 일이 아니지만 데이터 증강으로 몇 배의 데이터를 창출할 수 있다. 데이터 증강이란 데이터에 다양한 변화를 줘서 데이터의 개수를 늘리는 작업이다. 이미지 증강은 간단한 변형을 통해서 다양성을 추구하여 과적합을 방지..
-
이미지 처리-8 이미지 라벨링이미지 처리 2023. 6. 19. 18:50
1. 데이터 라벨링 데이터 라벨링은 ai 학습을 위한 데이터에 대해서 이름을 붙이는 것이다. 인공지능을 위해서 많은 양의 학습 데이터와 학습 시간이 필요하며 학습 데이터는 사용 용도에 맞게 적절하게 분류되고 라벨링 되는 것이 중요하다. 2. 이미지 라벨링 이미지 라벨링은 데이터 중 이미지 데이터에 대해서 라벨링을 진행하는 것으로 대표적인 종류로 Classification, Detection, Segmentation이 있다. 이 중 분류는 이미지의 라벨 정보만 필요하지만, 감지와 분석은 이미지 내부의 정보를 필요로 하기 때문에 라벨을 제외하고 이미지 내부의 정보를 설명할 수 있는 별도의 정보가 필요하며 이것을 만드는 것을 annotate라고 한다. 3. 라벨링 방법 Bounding Box: 바운딩 박스는 ..
-
이미지 처리-7 객체 추적이미지 처리 2023. 6. 19. 18:50
1. 평균 이동 추적 평균 이동 추적은 객체의 픽셀 분포를 기반으로 객체를 추적하는 방법이다. 가장 먼저 추적할 창인 빨간색 창을 선택하고 추적 창 내부에서 히스토그램 역투영을 계산한다. 역투영은 노란 창의 분포를 나타내는 히스토그램과 현재 창의 히스토그램을 비교하여 추적 대상에 속할 확률을 계산한다. 역투영 이미지에서 최댓값을 찾아서 추적 창의 위치를 업데이트하는 것을 일정 조건이 충족할 때까지 계속 반복하는 방법이다. import cv2 import os import numpy as np os.chdir('C:/Users/dotor/OneDrive/바탕 화면//jupyter/2. image') track_window = None roi_hist = None trem_crit = (cv2.TERM_CR..
-
이미지 처리-6 기본 동영상 처리이미지 처리 2023. 6. 19. 18:49
1. 동영상 열기 cv2에서의 동영상 처리는 주피터 환경에서 불가능하기 때문에 vscode에서 진행한다. vscode에서 구축한 아나콘다 환경을 실행하기 위해서는 cd anaconda3/envs/conda/python.exe 로 이동한 뒤 anaconda prompt에서 한 것처럼 activate conda 명령어를 실행시켜 주면 파이썬 파일을 실행할 수 있다. 이후에 run python을 하면 코드가 잘 동작한다. import cv2 import matplotlib.pyplot as plt import os os.chdir('C:/Users/dotor/OneDrive/바탕 화면/jupyter/2. image') cap = cv2.VideoCapture('./picture/blooms-113004.mp4..
-
이미지 처리-5 이미지 혼합이미지 처리 2023. 6. 19. 18:17
1. 이미지 확인, 가중치 혼합 sample_img = cv2.imread("../picture/download1.jfif") sample_logo = cv2.imread("../picture/download2.png") sample_img = cv2.cvtColor(sample_img, cv2.COLOR_BGR2RGB) sample_logo = cv2.cvtColor(sample_logo, cv2.COLOR_BGR2RGB) plt.imshow(sample_img) plt.show() plt.imshow(sample_logo) plt.show() 혼합에 사용할 이미지를 두 장 불러오고 잘 불러져 왔는지 확인한다. img1 = cv2.resize(sample_img, (800,600)) img2 = cv2..
-
이미지 처리-4 얼굴 이미지 회전이미지 처리 2023. 6. 19. 18:00
1. 이미지 불러오기 import cv2 import numpy as np import matplotlib.pyplot as plt face_cascade = cv2.CascadeClassifier('../picture/haarcascade_frontalface_default.xml') eye_cascade = cv2.CascadeClassifier('../picture/haarcascade_eye.xml') 얼굴 이미지 처리를 위한 모듈을 불러온다. cv2에서는 cascade api를 사용하는데 얼굴 인식에 대해서 훈련된 데이터를 xml 파일로 삽입하여 여러 가지 작업을 할 수 있으며 frontalface와 eye를 인식할 수 있는 xml 파일을 아래 링크에서 다운할 수 있다. 얼굴 전면과 https:..
-
이미지 처리-3 번호판이미지 처리 2023. 6. 18. 17:28
1. 이미지 기초 처리 import pytesseract image_path = '../picture/carNum.jpg' image = cv2.imread(image_path) image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) plt.imshow(image) plt.show() 차량 번호판 사진을 불러온다. gray_image = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY) plt.imshow(gray_image,'gray') plt.show() 그레이 스케일로 바꿔준다. structuringElement = cv2.getStructuringElement(cv2.MORPH_RECT,(9,9)) imgTopHat = cv2.morphologyE..