1.实验目的
利用opencv python实现对下图车牌进行字符切割。实验包括:灰度变化、图像反色、转成二值图、水平投影、垂直投影、字符切割和矩形标示等。2.实验过程
(1)编写代码
代码如下:
import cv2
import numpy as np
dst=cv2.imread("carplate.png")
plate_original = dst.copy()
cv2.imshow("yuantu", dst)
#高斯滤波
img_aussian = cv2.GaussianBlur(dst,(5,5),1)
#中值滤波
dst = cv2.medianBlur(img_aussian,3)
# 灰度化
gray = cv2.cvtColor(dst, cv2.COLOR_BGR2GRAY)
cv2.imshow('gray',gray)
#二值化处理,低于阈值的像素点灰度值置为0;高于阈值的值置为参数3
ret,thresh1 = cv2.threshold(gray,180,255,cv2.THRESH_BINARY)
cv2.imshow('threshold',thresh1)
gray=thresh1.copy()
LICENSE_HIGH,LICENSE_WIDTH=gray.shape
#-------------------------------跳变次数去掉铆钉和边框----------------------------------
times_row = [] #存储哪些行符合跳变次数的阈值
for row in range(LICENSE_HIGH): # 按行检测 白字黑底
pc = 0
for col in range(LICENSE_WIDTH):
if col != LICENSE_WIDTH-1:
if gray[row][col+1] != gray[row][col]:
pc = pc + 1
times_row.append(pc)
#找车牌的下边缘-从下往上扫描
row_end = 0
row_start = 0
for row in range(LICENSE_HIGH-2):
if times_row[row] <10:
continue
elif times_row[row+1] <10:
continue
elif times_row[row+2] <10:
continue
else