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中使用items()方法返回字典元素对的教程
May 21 Python
Python实现telnet服务器的方法
Jul 10 Python
python交互式图形编程实例(三)
Nov 17 Python
浅谈Python中带_的变量或函数命名
Dec 04 Python
Python根据成绩分析系统浅析
Feb 11 Python
python实现将一维列表转换为多维列表(numpy+reshape)
Nov 29 Python
Pyqt5 关于流式布局和滚动条的综合使用示例代码
Mar 24 Python
利用Python实现斐波那契数列的方法实例
Jul 26 Python
django和flask哪个值得研究学习
Jul 31 Python
Python pathlib模块使用方法及实例解析
Oct 05 Python
Python+Appium新手教程
Apr 17 Python
python数字图像处理之图像自动阈值分割示例
Jun 28 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
新版PHP将向Java靠拢
2006/10/09 PHP
杏林同学录(六)
2006/10/09 PHP
PHP开发中的错误收集,不定期更新。
2011/02/03 PHP
PHP 使用pcntl和libevent 实现Timer功能
2013/10/27 PHP
php实现随机生成易于记忆的密码
2015/06/19 PHP
一个PHP实现的轻量级简单爬虫
2015/07/08 PHP
在javascript中执行任意html代码的方法示例解读
2013/12/25 Javascript
jquery预览图片实现鼠标放上去显示实际大小
2014/01/16 Javascript
使用RequireJS优化JavaScript引用代码的方法
2015/07/01 Javascript
js实现表单Radio切换效果的方法
2015/08/17 Javascript
JS正则替换掉小括号及内容的方法
2016/11/29 Javascript
js 数据存储和DOM编程
2017/02/09 Javascript
jQuery基于事件控制实现点击显示内容下拉效果
2017/03/07 Javascript
js Element Traversal规范中的元素遍历方法
2018/04/19 Javascript
js实现简单选项卡功能
2020/03/23 Javascript
Vue2 添加数据可视化支持的方法步骤
2019/01/02 Javascript
解决微信小程序中转换时间格式IOS不兼容的问题
2019/02/15 Javascript
JS数据类型(基本数据类型、引用数据类型)及堆和栈的区别分析
2020/03/04 Javascript
python中的对象拷贝示例 python引用传递
2014/01/23 Python
python字符串的方法与操作大全
2018/01/30 Python
python中的TCP(传输控制协议)用法实例分析
2019/11/15 Python
pycharm无法导入本地模块的解决方式
2020/02/12 Python
jupyter修改文件名方式(TensorFlow)
2020/04/21 Python
The North Face北面美国官网:美国著名户外品牌
2018/09/15 全球购物
雷曼兄弟的五金店:Lehman’s Hardware Store
2019/04/10 全球购物
CK巴西官方网站:Calvin Klein巴西
2019/07/19 全球购物
希腊品牌鞋类销售网站:epapoutsia.gr
2020/03/18 全球购物
英国豪华家具和经典家居饰品购物网站:OKA
2020/06/05 全球购物
教师工作表现评语
2014/12/31 职场文书
清洁工岗位职责
2015/02/13 职场文书
《我和小伙伴》教学反思
2016/02/20 职场文书
标准版个人借条怎么写?以及什么是借条?
2019/08/28 职场文书
导游词之长城八达岭
2019/09/24 职场文书
纯html+css实现打字效果
2021/08/02 HTML / CSS
OpenCV实现普通阈值
2021/11/17 Java/Android
Golang 入门 之url 包
2022/05/04 Golang