번호판 만들기 사이트 - beonhopan mandeulgi saiteu

번호판 만들기 사이트 - beonhopan mandeulgi saiteu

[무료] 로고 제작사이트

지난번 포스팅에서는 레이저로 애쉬 전화번호판을 제작해보았는데요.

사실 제가 디자인을 전공한 사람도 아니고,
깔끔한 클립아트나 이미지를 어디서 다운받을까
고민하던중 찾게 된 로고제작 사이트!!!

https://www.designevo.com

사실 제 블로그 로고도 무료 로고로 제작된 거라..
전화번호판에 맞는 이미지를 구글에서 찾다가 찾다가 5일이 넘게 찾았습니다.

그런데 왠만한 이미지는 다 무료네요.

다만 유료는 좀 더 다양한 디자인이 제공된다는 특징!!
그런데 개인이 그정도로 사용하려나 모르겠네요.

그리고 아래 사이트에서 가입해서 무료로 6개의 로고를 저장할 수 있어요..

번호판 만들기 사이트 - beonhopan mandeulgi saiteu

왼쪽에는 다양한 카테고리의 로고디자인이 배열되어 있고 
원하는 로고를 클릭하면 간단히 텍스트를 수정할 수 있습니다.

이렇게 편집한 로고는 아래 그림처럼 오른쪽 상단에 다운로드를 눌러서 저장하거나
화면 캡처로 이미지로 저장하시면 됩니다.

번호판 만들기 사이트 - beonhopan mandeulgi saiteu

이렇게 저장한 이미지를 레이저각인기에 로딩만 시켜주면
아래와 같은 전화번호판을 만들 수 있습니다.

너무 쉽죠????^^
즐겨찾기 해두시고 필요하실 때 유용하게 쓰세요^^

번호판 만들기 사이트 - beonhopan mandeulgi saiteu

무료 로고 제작 사이트는 아래 링크로 고고싱!!!

아래에는 위의 디자인으로 제작한 전화번호판의 설치기를 보실 수 있습니다.

아마 이 개발에서 쓴 모듈은 코랩과 같은 환경에서 시도해보지 않았다. 그리고 딱히 많은 모듈을 쓰지 않아 2개 정도만 검색해서 cmd에 다운 받아주면 되었기에 노트북에 깔린 파이썬을 이용해 개발하였다.

개발 환경 : 파이썬 3.9.2

완성 코드

#차량 번호판에 대한 규정을 모두 참고한 것이 아님.

import numpy as np
import random
from PIL import Image,ImageDraw,ImageFont

list_A = []
number = '0123456789' 
for num in number:
    list_A.append(num) #번호판의 숫자를 담은 리스트
list_B = []
korean = '가나다라마바사아자하거너더러머버서어저허구누도로부수우주호고노더소오지두'
for kor in korean:
    list_B.append(kor) #번호판의 문자를 담은 리스트

for i in range(20): #전체 데이터셋을 50개 만들 계획(그 중 20개는 2019년에 개정된 번호판)
    list_1 = [random.choice(number) for i in range(3)] 
    list_2 = [random.choice(korean) for i in range(1)]
    list_3 = [random.choice(number) for i in range(4)]
    list_1 = ["".join(list_1)]
    list_3 = ["".join(list_3)]
    list_last = list_1 + list_2 + list_3
    str = " ".join(list_last) #문자와 숫자 사이 공백
    draw_text = str
    font = ImageFont.truetype("NotoSansKR-Medium.otf",37, encoding="unic") #파라미터 순대로 폰트,폰트 크기
    path = "license_plate.png" #기존의 번호판 배경 이미지
    image_pil = Image.open(path)
    draw = ImageDraw.Draw(image_pil)
    w, h = font.getsize(draw_text)
    draw.text((16,-3),draw_text,'black', font) #(x,y), 번호판 문자열, 폰트 색, 위에서 설정한 폰트  

    image_pil.save(draw_text+'.png',"PNG")
	#image_pil.show() 만약 이미지를 보고 싶다면 입력(저장하는 기능은 아님)
    
for i in range(30): #전체 데이터셋을 50개 만들 계획(그 중 30개는 2019년 전에 만들어진 번호판)
    list_1 = [random.choice(number) for i in range(2)]
    list_2 = [random.choice(korean) for i in range(1)]
    list_3 = [random.choice(number) for i in range(4)]
    list_1 = ["".join(list_1)]
    list_3 = ["".join(list_3)]
    list_last = list_1 + list_2 + list_3
    str = " ".join(list_last)
    draw_text = str
    font = ImageFont.truetype("NotoSansKR-Medium.otf",37, encoding="unic")
    path = "license_plate.png"
    image_pil = Image.open(path)
    draw = ImageDraw.Draw(image_pil)
    w, h = font.getsize(draw_text)
    draw.text((27,-3),draw_text,'black', font)

    image_pil.save(draw_text+'.png',"PNG")

가상 이미지 생성을 위해 코드를 작성하던 중 만난 오류와 해결방안들

(1) 

번호판 만들기 사이트 - beonhopan mandeulgi saiteu
font = ImageFont.truetype("NotoSansKR-Medium.otf",37, encoding="unic")

처음 폰트를 작성할 때 개발을 위해 참고한 블로그 코드대로 내가 다운받은 폰트의 주소를 복사했었다.

font = ImageFont.truetype("C:\Users\pc\OneDrive\문서\인공지능",37, encoding="unic")

이전에는 이런 코드였다. 하지만 이 코드를 작성하니 OSError가 났다. 

해결방안 : 폰트를 파이썬 코드 파일과 같은 폴더에 넣어주고 폰트 자체 이름을 주소 대신 입력하였다.

폰트 자체 이름을 입력할 때는 폰트의 유형을 빼먹지 않도록 주의해야 한다.(ex : ttf,otf 등등)

(2)

image_pil = Image.open(path)

이 코드의 기존 코드는 아래와 같았다.

image_pil = Image.open(path)
image = np.array(image_pil)

코드를 작성하기 위해 참조한 블로그에서 이러한 방식으로 이미지를 열었다. 하지만 2번째 줄로 인해 np.ndarray 오류가 났다. np.array의 역할을 생각해보았는데 내가 작성하려는 코드에서는 크게 의미가 있는 역할이 아니었다. 그래서 삭제를 결정했고 이후에 잘 작동되었다.

(3)

draw.text((16,-3),draw_text,'black', font)
draw.text((27,-3),draw_text,'black', font)

이 두가지 코드에 대해서는 오류가 없었지만 x,y 값을 조절해 폰트의 위치를 중앙으로 옮겼다. 이 때  show()를 사용해 굳이 저장하지 않고 그림으로 바로 바로 확인하며 직관적으로 조절했다.

이외에도 자잘 자잘한 오류가 많았지만 기억에 남는 것은 이 정도이다.

가장 힘 빠지게 했던 문제는 바로 폰트 관련 문제였다. 글자 위치와 사이즈까지 조정하고 나니 내가 다운받은 글씨체가 한글 지원이 안되는 것이었다. <가상 데이터를 활용한 번호판 문자 인식 및 차종 인식 시스템 제안>이라는 논문을 참고하여 다운 받은 글씨체였다. 차량 번호판과 가장 유사도가 높은 글씨체이기에 이를 대체할 수 있는 글씨체는 없었다. 정말 열심히 짠 코드인데 글씨체 때문에 완벽하지 않다는 게 마음에 걸리긴 했지만 일단 구글 DoHyeon-Medium 글씨체로 대체하였다. 이 문제와 관련해서는 추후에 더 개발을 하게 된다며 해결할 것 같다.

번호판 만들기 사이트 - beonhopan mandeulgi saiteu

이렇게 총 50개의 가상 번호판 데이터를 만들었다. 이제 이 데이터를 이용해 논문을 토대로 학습할 예정이다.

코드 참조 :

https://diyver.tistory.com/171

파이썬으로 한글폰트 텍스트 이미지 만들기

OpenCV의 putText( ) 는 글꼴이 한정되어 있다. 여러가지 방법으로 글자를 넣을 수 있는 것 같은데, 방법이 좀 복잡해 보여서 다른 방법을 찾아보다가 쉬운 방법을 찾아서 소개해본다. 일단 파이썬 의

diyver.tistory.com

번호판 만들기 사이트 - beonhopan mandeulgi saiteu

https://todayisbetterthanyesterday.tistory.com/68

[Python] 이미지 시각화의 기초 PIL, opencv활용

<!DOCTYPE html> 1-10. 시각화 기초 (이미지) package 불러오기¶ In [1]: import numpy as np from PIL import Image import matplotlib.pyplot as plt %matplotlib inline 이미지 파일 열기¶ opencv로도 열수..

todayisbetterthanyesterday.tistory.com

번호판 만들기 사이트 - beonhopan mandeulgi saiteu

논문 참조 :

이승주, 박구만(2020) . <가상 데이터를 활용한 번호판 문자 인식 및 차종 인식 시스템 제안> . 방송공학회 논문지

이유진, 김상준, 박경무, 박구만(2020) . <3차원 회전을 이용한 인조 번호판 생성기의 번호판 인식 성능 비교> . 2020년 한국방송·미디어공학회 하계학술대회

장일식, 박구만(2021) . <인조 번호판을 이용한 자동차 번호인식 성능 향상 기법> . 방송공학회논문지


초기 아이디어에서 발전 과정

가상번호판 관련 생성 프로그램이나 코드를 알아보기 위해 구글링과 유튜브 영상 참조 등 서치를 많이 했다. 그러던 중 발견한 논문들이 바로 위 논문들인데 아쉽게도 논문에는 생성 자체에 대한 자세한 방법은 나와있지 않다. 그래서 유튜브 에서 중 그림판을 이용한 번호판 만드는 강의를 따라해보려고 했다. 현재는 데이터 50개를 만들었지만 이후에 천개, 만개를 만들어야하는 상황이 온다면 위에 방법으로는 절대 불가능하다. 그럼에도 방법이 떠오르지 않아 하나 하나 번호를 따는 것까지 했었다.(완벽한 시간낭비를 했다) 

그러던 중 정말 이 방법이 말이 안된다고 생각해 합성에 대한 코드들을 찾아보았다. 그러다 PIL과 opencv2(결국 사용하진 않았다)에 대한 코드들을 보았고 이 방법을 이용해야겠다고 생각했다.

블로그에 있는 코드들을 복붙한 것이 아니라 문법만 참고했기에 코드를 짜는데는 조금 시간이 걸렸다.(막상 결과물을 보니 너무나도 허접하고 초라한 코드였지만..ㅎ)

이제 이 데이터를 가지고 3차원 회전과 스타일 변환 등(논문에 나와 있는 방법)을 통해 최종 학습 데이터를 만들것이다.