본문 바로가기

728x90

넘파이

(5)
[이미지] 번호판 생성 [Python] - cv2, PIL 2006년 이전쯤 기준 차량 번호판 생성 도시와 문자 숫자를 랜덤으로 선택 높이, 너비 정보를 구하고 정보를 넣을 좌표 구하기 PIL 이미지로 문자를 이미지에 넣기 # 문자를 이미지에 넣기 위해 PIL 파일로 변환 과정 필요 # Image.fromarray()에 변경할 이미지를 입력 # 문자를 삽입하기 위해 ImageDraw.Draw()에 PIL 이미지로 변환된 파일을 입력 # draw.text()에 시작 좌표(가로, 세로), 문자, 색상, 폰트.. 등등을 입력 final_img = Image.fromarray(org_img) draw = ImageDraw.Draw(final_img) draw.text((450, 150), upper_str, (255,255,255), font=font_u) 번호판 10..
[이미지] Numpy로 이미지 처리 기초 [Python]-cv2 고양이 사진을 여러 구간으로 나누어 224x224 크기로 10개의 이미지를 만드는 과정 $($하나의 함수로 길게 만들었어요$)$ # 마구잡이로 자르면 고양이의 특징이 없는 이미지가 나올 수 있음 # 전체 이미지 비율을 유지하기 위해서 padding을 하고 # 어떻게 자르든 고양이의 특징이 나오도록 전체 이미지를 축소하고 # 랜덤하게 224x224 크기로 10번 crop 진행 from matplotlib import pyplot as plt import numpy as np import random import cv2 def pad_resize_crop(img, size): # 패딩할 상하/좌우 픽셀 # 상하나 좌우 중 한 세트에만 패딩을 할 예정 -> 초기 값: 0 # 상하좌우 모두 패딩을 하고 싶다면 ..
[이미지] Numpy로 이미지를 224x224 크기로 crop 하기 [Python]-cv2 from matplotlib import pyplot as plt import numpy as np import random import cv2 org_img = cv2.imread("./cat2.png")[:,:,::-1] plt.imshow(org_img) plt.title(f"original image") plt.show() def cropping(img): height, width = img.shape[:2] plt.figure(figsize=(10,5)) for i in range(10): # 가로, 세로의 crop할 시작점 crop_s_h = random.randint(0, height-224) crop_s_w = random.randint(0, width-224) # 시작점부터 가로, 세로가..
[이미지] Numpy로 이미지 패딩 후 224x224 resize 하기 [Python]-cv2 더보기 패딩 없이 resize만 하면 아래처럼 이미지가 뭉게집니다. import numpy as np import cv2 from matplotlib import pyplot as plt def resize_224x224(img): # 패딩할 상하/좌우 픽셀 # 상하나 좌우 중 한 세트에만 패딩을 할 예정 -> 초기 값: 0 # 상하좌우 모두 패딩을 하고 싶다면 # 0이 아닌 같은 값으로 넣은 후 # 이후 ud, lr 값을 업데이트할 때, # += 로 값을 더해주는 형식으로 하면 됨. ud, lr = (0, 0), (0, 0) # 이미지의 높이, 너비 중의 더 큰 값 M = max(img.shape[:2]) # s = 이미지의 높이와 너비의 차 s = img.shape[0]-img.shape[1] # 높..
[프로그래머스] Lv.2 두 원 사이의 정수 쌍 [Python] 2차원 직교 좌표계에서 중심이 원점인 서로 다른 크기의 두 원의 사이$($경계 포함$)$ 점 중에서 좌표가 모두 정수인 점의 개수를 구하는 문제 더보기 문제 설명 x축과 y축으로 이루어진 2차원 직교 좌표계에 중심이 원점인 서로 다른 크기의 원이 두 개 주어집니다. 반지름을 나타내는 두 정수 r1, r2가 매개변수로 주어질 때, 두 원 사이의 공간에 x좌표와 y좌표가 모두 정수인 점의 개수를 return하도록 solution 함수를 완성해주세요. ※ 각 원 위의 점도 포함하여 셉니다. 제한 사항 1 ≤ r1 < r2 ≤ 1,000,000 접근 방법: x축의 양의 부분을 포함하여 1사분면 위의 점의 개수를 구한 후, 그 값의 4배를 출력 다음 두 구간 0 ≤ y < r1 과 r1 ≤ y < r2 으로 구분..