python基于opencv批量生成验证码的示例

基本思路是使用opencv来把随机生成的字符,和随机生成的线段,放到一个随机生成的图像中去。

  虽然没有加复杂的形态学处理,但是目前看起来效果还不错

  尝试生成1000张图片,但是最后只有998张,因为有有重复的,被覆盖掉了。

  代码如下:

import cv2import numpy as npline_num = 10pic_num = 1000path = "./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 = 60img_width = 240for 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 批量生成验证码的资料请关注 其它相关文章!

相关文章

发表新评论