Python 에서 OpenCV 는 간단 한 자동차 번호판 문자 절단 을 실현 합 니 다.
![](https://s1.md5.ltd/image/9f53a3e7a64690a922366e50a5ed07d8.png)
1.구현 코드
import cv2
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image
#
image1=cv2.imread("123456.jpg")
cv2.imshow("image1", image1)
#
image1_1=cv2.cvtColor(image1,cv2.COLOR_BGR2GRAY)
cv2.imshow("image1_1", image1_1)
#
h,w = image1_1.shape
image1_2=image1_1.copy()
for i in range(h):
for j in range(w):
image1_2[i,j] = 255-image1_2[i,j]
cv2.imshow('image1_2', image1_2)
#
ret,image2 = cv2.threshold(image1_2, 100, 255, cv2.THRESH_BINARY)
cv2.imshow('image2', image2)
#
h1,w1=image2.shape #
image3=image2.copy()
a = [0 for z in range(0, h1)] # w ,
#
for j in range(0,h1):
for i in range(0,w1):
if image3[j,i]==0:
a[j]+=1
image3[j,i]=255
for j in range(0,h1):
for i in range(0,a[j]):
image3[j,i]=0
plt.imshow(image3,cmap=plt.gray())#
plt.show()
cv2.imshow('image3',image3)
#
h2,w2=image2.shape #
image4=image2.copy()
b = [0 for z in range(0, w2)] #b = [0,0,0,0,0,0,0,0,0,0,...,0,0] w ,
#
for j in range(0,w2): #
for i in range(0,h2): #
if image4[i,j]==0: #
b[j]+=1 # ,
image4[i,j]=255 # ,
for j in range(0,w2):
for i in range((h2-b[j]),h2): #
image4[i,j]=0 #
plt.imshow(image4,cmap=plt.gray())
plt.show()
cv2.imshow('image4',image4)
#
Position = []
start = 0
a_Start = []
a_End = []
#
for i in range(len(a)):
if a[i] > 0 and start ==0:
a_Start.append(i)
start = 1
if a[i] <= 0 and start == 1:
a_End.append(i)
start = 0
# ,
for i in range(len(a_Start)):
#
cropImg = image2[a_Start[i]:a_End[i], 0:w1]
#
bstart = 0
bend = 0
b_Start = 0
b_End = 0
for j in range(len(b)):
if b[j] > 0 and bstart ==0:
b_Start =j
bstart = 1
bend=0
if b[j] <= 0 and bstart == 1:
b_End =j
bstart = 0
bend=1
if bend == 1:
Position.append([b_Start,a_Start[i],b_End,a_End[i]])
bend =0
image2 = cv2.cvtColor(image2, cv2.COLOR_BGR2RGB)# RGB
#
for m in range(len(Position)):
cv2.rectangle(image2, (Position[m][0],Position[m][1]), (Position[m][2],Position[m][3]), (0, 0, 255), 2)# ; ; ; rgb ;
cv2.imshow('rect',image2)
cv2.waitKey(0)
2.실행 결과![](https://s1.md5.ltd/image/3ffa9634b3ba306c13f7e0479c1c182c.png)
![](https://s1.md5.ltd/image/3769e16bba56d58fbb373b3ce39f688c.png)
![](https://s1.md5.ltd/image/e1557fa8f572705a0aec0b3645bfe81e.png)
![](https://s1.md5.ltd/image/7ec8fd8af6e4db3f4fba848f6d299d87.png)
![](https://s1.md5.ltd/image/09b83316eb642ed11be5cd993ea3300d.png)
![](https://s1.md5.ltd/image/717c3c6d23138e967d50c92ec88f667b.png)
![](https://s1.md5.ltd/image/04e5e37604a3be1ae4814dbcfa4814e9.png)
3.닥 친 문제 및 해결 방법
이치 화 된 그 레이스 케 일 그림 에 대해 서 는 각 문자 좌 표를 확정 한 후 cv2.rectangle()방법 으로 직사각형 상 자 를 그립 니 다.cv2.rectangle(image 2,(Position[m][0],Position[m][1]),(Position[m][2],Position[m][3],(0,255,0),2).그 중에서 첫 번 째 매개 변 수 는 원 도 를 나타 내 고 두 번 째 매개 변 수 는 행렬 의 왼쪽 위 점 좌 표를 나타 내 며 세 번 째 매개 변 수 는 행렬 의 오른쪽 아래 점 좌 표를 나타 낸다.네 번 째 매개 변 수 는 선 을 그 리 는 데 대응 하 는 RGB 색상 이 고 다섯 번 째 매개 변 수 는 선 을 그 리 는 너비 입 니 다.RGB 색상 을 설정 할 때 사각형 상자 색상 이 검은색 과 흰색 으로 만 표 시 됩 니 다.이 유 는 2 값 그림 에 그림 색상 을 그 리 는 데 3 채널 이 없어 서 컬러 그림 을 표시 할 수 없 기 때 문 입 니 다.
해결 방법:그 레이스 케 일 을 RGB 컬러 로 변환 합 니 다.코드 는 image 2=cv2.cvtColor(image 2,cv2.COLORBGR2RGB)。
파 이 썬 에서 OpenCV 가 간단 한 번호판 문자 절단 을 실현 하 는 것 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 OpenCV 번호판 문자 절단 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Visual Studio 2017에서 OpenCV 템플릿 프로젝트 만들기・Windows 7 Professional 64bit ・Visual Studio 2017 Version 15.9.14 · OpenCV 3.4.1 OpenCV의 도입 방법 등은 아래를 참조하십시오. Visual Stu...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.