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


Posted in Python onApril 28, 2021

基本思路是使用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基于opencv批量生成验证码的示例的详细内容,更多关于python 批量生成验证码的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python算法学习之桶排序算法实例(分块排序)
Dec 18 Python
Python使用htpasswd实现基本认证授权的例子
Jun 10 Python
Python实现将sqlite数据库导出转成Excel(xls)表的方法
Jul 17 Python
numpy中索引和切片详解
Dec 15 Python
python中numpy的矩阵、多维数组的用法
Feb 05 Python
python 如何将数据写入本地txt文本文件的实现方法
Sep 11 Python
浅析使用Python搭建http服务器
Oct 27 Python
tensorflow实现在函数中用tf.Print输出中间值
Jan 21 Python
Python基于百度AI实现OCR文字识别
Apr 02 Python
如何把外网python虚拟环境迁移到内网
May 18 Python
python如何实现word批量转HTML
Sep 30 Python
Python读取和写入Excel数据
Apr 20 Python
python基于tkinter制作下班倒计时工具
Apr 28 #Python
Python爬虫之爬取哔哩哔哩热门视频排行榜
k-means & DBSCAN 总结
秀!学妹看见都惊呆的Python小招数!【详细语言特性使用技巧】
Apr 27 #Python
Python代码,能玩30多款童年游戏!这些有几个是你玩过的
python实现腾讯滑块验证码识别
Apr 27 #Python
python实现调用摄像头并拍照发邮箱
Apr 27 #Python
You might like
怎样在UNIX系统下安装php3
2006/10/09 PHP
phpmyadmin 访问被拒绝的真实原因
2009/06/15 PHP
Ajax+Json 级联菜单实现代码
2009/10/27 Javascript
解决火狐浏览器下JS setTimeout函数不兼容失效不执行的方法
2012/11/14 Javascript
Jquery刷新页面背景图片随机变换的实现方法
2013/03/15 Javascript
javascript上传图片前预览图片兼容大多数浏览器
2013/10/25 Javascript
使用script的src实现跨域和类似ajax效果
2014/11/10 Javascript
JavaScript中number转换成string介绍
2014/12/31 Javascript
JavaScript鼠标事件,点击鼠标右键,弹出div的简单实例
2016/08/03 Javascript
vue2.0+webpack环境的构造过程
2016/11/08 Javascript
分类解析jQuery选择器
2016/11/23 Javascript
bootstrap学习使用(导航条、下拉菜单、轮播、栅格布局等)
2016/12/01 Javascript
Javascript实现倒计时时差效果
2017/05/18 Javascript
React学习笔记之条件渲染(一)
2017/07/02 Javascript
js实现数组和对象的深浅拷贝
2017/09/30 Javascript
vuex 使用文档小结篇
2018/01/11 Javascript
nodejs中Express与Koa2对比分析
2018/02/06 NodeJs
Angular angular-file-upload文件上传的示例代码
2018/08/23 Javascript
JavaScript数据结构与算法之检索算法示例【二分查找法、计算重复次数】
2019/02/22 Javascript
jQuery动态生成的元素绑定事件操作实例分析
2019/05/04 jQuery
微信小程序登陆注册功能的实现代码
2019/12/10 Javascript
[01:45]2014DOTA2 TI预选赛预选赛 大神专访第二弹!
2014/05/20 DOTA
Python字符串格式化的方法(两种)
2017/09/19 Python
Python基础教程之利用期物处理并发
2018/03/29 Python
python中csv文件的若干读写方法小结
2018/07/04 Python
python自带tkinter库实现棋盘覆盖图形界面
2019/07/17 Python
Python人工智能之路 jieba gensim 最好别分家之最简单的相似度实现
2019/08/13 Python
python爬虫模拟浏览器的两种方法实例分析
2019/12/09 Python
浅谈Keras参数 input_shape、input_dim和input_length用法
2020/06/29 Python
python 决策树算法的实现
2020/10/09 Python
html5 touch事件实现触屏页面上下滑动(二)
2016/03/10 HTML / CSS
德国香水、化妆品和护理产品网上商店:Parfumdreams
2018/09/26 全球购物
2014年出纳工作总结与计划
2014/12/09 职场文书
上课讲话检讨书范文
2015/05/07 职场文书
Pytest中conftest.py的用法
2021/06/27 Python
JS精髓原型链继承及构造函数继承问题纠正
2022/06/16 Javascript