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的切割方法,途中遇到了問題未解決,請老師幫忙檢查一下問題,同時可以鍛鍊自己的能力。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章