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

作者:奈何缘浅wyj 时间:2022-04-07 22:42:07 

基本思路是使用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批量生成验证码的示例

来源:https://juejin.cn/post/6955740180783300615

标签:python,验证码,opencv
0
投稿

猜你喜欢

  • mysql 获取表有多少列

    2010-10-14 13:44:00
  • 详解Golang中interface{}的注意事项

    2024-05-09 09:30:59
  • Python爬虫实现抓取京东店铺信息及下载图片功能示例

    2022-11-26 21:02:44
  • Python实战项目用PyQt5制作漫画脸GUI界面

    2023-07-05 13:17:19
  • Python编写单元测试代码实例

    2022-11-02 12:27:09
  • python中使用input()函数获取用户输入值方式

    2021-06-23 04:03:11
  • 利用Python的pandas数据处理包将宽表变成窄表

    2021-07-28 20:00:11
  • 通过Fckeditor把图片上传到独立图片服务器的方法

    2023-11-06 20:02:24
  • ASP实现防止网站被采集代码

    2011-03-25 10:40:00
  • scipy.interpolate插值方法实例讲解

    2022-08-08 21:23:05
  • 最新Python idle下载、安装与使用教程图文详解

    2022-08-27 12:33:15
  • SQLServer 2005 列所有存储过程的语句

    2024-01-18 12:02:34
  • Python超简单容易上手的画图工具库(适合新手)

    2021-12-06 04:05:23
  • python实现简单的飞机大战

    2023-07-08 09:16:10
  • php事务处理实例详解

    2024-05-13 09:25:30
  • PHP动态生成javascript文件的2个例子

    2024-05-11 09:25:44
  • 不同分辨率下的自适用宽度

    2008-11-24 12:58:00
  • python对html过滤处理的方法

    2023-04-25 15:28:57
  • 对变量赋值的理解--Pyton中让两个值互换的实现方法

    2022-07-05 02:51:56
  • django中模板继承与ModelForm实例详解

    2021-09-05 18:52:10
  • asp之家 网络编程 m.aspxhome.com