python基於opencv批量生成驗證碼的示例
基本思路是使用opencv來把隨機生成的字符,和隨機生成的線段,放到一個隨機生成的圖像中去。
雖然沒有加復雜的形態學處理,但是目前看起來效果還不錯
嘗試生成1000張圖片,但是最後隻有998張,因為有有重復的,被覆蓋掉瞭。
代碼如下:
import cv2 import numpy as np line_num = 10 pic_num = 1000 path = "./imgs/" def randcolor(): return (np.random.randint(0,255),np.random.randint(0,255),np.random.randint(0,255)) def randchar(): return chr(np.random.randint(65,90)) def randpos(x_start,x_end,y_start,y_end): return (np.random.randint(x_start,x_end), np.random.randint(y_start,y_end)) img_heigth = 60 img_width = 240 for i in range(pic_num): img_name = "" #生成一個隨機矩陣,randint(low[, high, size, dtype]) img = np.random.randint(100,200,(img_heigth,img_width, 3), np.uint8) #顯示圖像 #cv2.imshow("ranImg",img) x_pos = 0 y_pos = 25 for i in range(4): char = randchar() img_name += char cv2.putText(img,char, (np.random.randint(x_pos,x_pos + 50),np.random.randint(y_pos,y_pos + 35)), cv2.FONT_HERSHEY_SIMPLEX, 1.5, randcolor(), 2, cv2.LINE_AA) x_pos += 45 #cv2.imshow("res",img) #添加線段 for i in range(line_num): img = cv2.line(img, randpos(0,img_width,0,img_heigth), randpos(0,img_width,0,img_heigth), randcolor(), np.random.randint(1,2)) #cv2.imshow("line",img) cv2.imwrite(path + img_name + ".jpg",img) #cv2.waitKey(0) #cv2.destroyAllWindows()
結果:
以上就是python基於opencv批量生成驗證碼的示例的詳細內容,更多關於python 批量生成驗證碼的資料請關註WalkonNet其它相關文章!
推薦閱讀:
- OpenCV-Python實現油畫效果的實例
- 源碼解析python中randint函數的效率缺陷
- Python實現數字圖像處理染色體計數示例
- Python+OpenCV實現六種常用圖像特效
- OpenCV學習記錄python實現連通域處理函數