Python OpenCV 实现车牌号的简单切割(画矩形,设置画笔颜色)

一、实验目的

通过OpenCV第五次进行实验,简单车牌字符切割。

二、实验内容

对简单车牌进行字符切割。

三、实验过程

我使用的是python语言+openCV来实现简单车牌字符切割的功能。

1)读取图片

使用imread()函数读取图片,使用imshow()函数显示图片,waitKey()函数含义为按下任意键继续;

代码实例:

img = cv2.imread("123456.jpg")

cv2.imshow("img",img)

cv2.waitKey(0)

 

 

3.1读取的图片

2)灰度处理

实例代码:

gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

cv2.imshow("gray",gray)

cv2.waitKey(0)

 

 

3.2灰度处理图

3)二值化处理

使用threshold()函数进行图片反色:

实例代码:

ret,im_fixed=cv2.threshold(gray,50,100,cv2.THRESH_BINARY)

cv2.imshow("im_fixed",im_fixed)

cv2.waitKey(0)

 

 

3.3二值化处理图

4)图像反色

输入的代码:

img2 = gray.copy()

cv2.threshold(gray,80,255,0,gray)

for i in range(0,gray.shape[0]):

    for j in range(0,gray.shape[1]):

        img2[i,j] = 255-gray[i,j]

cv2.imshow("img2",img2)

cv2.waitKey(0)

 

 

3.4反色后得到的图片

5)水平投影

实例代码:

 1 img3 = img2.copy()
 2 
 3 #返回图像的高和宽
 4 
 5 (h,w)=img3.shape
 6 
 7 #初始化一个跟图像高一样长度的数组,用于记录每一行的黑点个数
 8 
 9 a=[0 for z in range(0,h)]
10 
11 for i in range(0,h):          #遍历每一行
12 
13     for j in range(0,w):      #遍历每一列
14 
15         if img3[i,j]==0:      #判断该点是否为黑点,0代表黑点
16 
17             a[i]+=1           #该行的计数器加一
18 
19             img3[i,j]=255     #将其改为白点,即等于255
20 
21 for i in range(0,h):          #遍历每一行
22 
23     for j in range(0,a[i]):   #从该行应该变黑的最左边的点开始向最右边的点设置黑点
24 
25         img3[i,j]=0           #设置黑点
26 
27 cv2.imshow("shuiping",img3)
28 
29 cv2.waitKey(0)

 

 

3.5水平投影图

6)垂直投影

实例代码:

 1 img4 = img2.copy()
 2 
 3 #返回图像的高和宽
 4 
 5 (h,w)=img4.shape
 6 
 7 #初始化一个跟图像宽一样长度的数组,用于记录每一列的黑点个数
 8 
 9 a =[0 for z in range(0,w)]
10 
11 for i in range(0,w):           #遍历每一列  
12 
13     for j in range(0,h):       #遍历每一行
14 
15         if img4[j,i]==0:       #判断该点是否为黑点,0代表是黑点
16 
17             a[i]+=1            #该列的计数器加1
18 
19             img4[j,i]=255      #记录完后将其变为白色,即等于255
20 
21 for i in range(0,w):           #遍历每一列
22 
23     for j in range(h-a[i],h):  #从该列应该变黑的最顶部的开始向最底部设为黑点
24 
25         img4[j,i]=0            #设为黑点
26 
27 cv2.imshow("chuizhi",img4)
28 
29 cv2.waitKey(0)

 

 

3.6垂直投影图

7)画矩形

实例代码:

 1 image = img2.copy()
 2 
 3 cv2.rectangle(image, (10,10), (65,120),(0,0,255),1)#设置矩形的各参数依次是:图片,添加的文字,左上角坐标(整数),字体,字体大小,颜色,字体粗细
 4 
 5 cv2.rectangle(image, (75,10), (135,120),(0,0,255), 1)
 6 
 7 cv2.rectangle(image, (160,10), (220,120),(0,0,255), 1)
 8 
 9 cv2.rectangle(image, (225,10), (290,120),(0,0,255), 1)
10 
11 cv2.rectangle(image, (300,10), (355,120),(0,0,255), 1)
12 
13 cv2.rectangle(image, (360,10), (415,120),(0,0,255), 1)
14 
15 cv2.rectangle(image, (420,10), (480,120),(0,0,255), 1)
16 
17 cv2.imshow('image',image)
18 
19 cv2.waitKey(0)

 

 

3.7矩形分割

四、实验总结

学习了OpenCV的切割方法,途中遇到了问题未解决,请老师帮忙检查一下问题,同时可以锻炼自己的能力。

posted @ 2020-03-19 00:02  辣條先生  阅读(1316)  评论(1编辑  收藏  举报