做验证码图片的识别,不论是使用传统的ORC技术,还是使用统计机器学习或者是使用深度学习神经网络,都少不了从网络上采集大量相关的验证码图片做数据集样本来进行训练。
创新互联公司2013年至今,先为华龙等服务建站,华龙等地企业,进行企业商务咨询服务。为华龙企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。采集验证码图片,可以直接使用Python进行批量下载,下载完之后,就需要对下载下来的验证码图片进行标注。一般情况下,一个验证码图片的文件名就是图片中验证码的实际字符串。
在不借助工具的情况下,我们对验证码图片进行上述标注的流程是:
1、打开图片所在的文件夹;
2、选择一个图片;
3、鼠标右键重命名;
4、输入正确的字符串;
5、保存
州的先生亲身体验,一个验证码完成数据的标注,大概需要10到20秒。大量的时间浪费在了重复地进行鼠标右键重命名操作了。于是,使用Qt的Python封装包——PyQt5,编写了一个小工具,方便进行验证码图片的数据标注,节省时间,珍惜生命。
程序的运行如下动图所示:
下面我们来了解一下如何编写这个验证码图片数据标注程序。
首先,我们来构建一个图形界面。这个图形界面里面包含了一个图像展示控件、一个文本输入控件、四个按钮控件。基于此,我们选择三个布局来排列图形界面的布局。图形界面窗口中的核心控件是一个QWidget(),其布局层设置为网格布局QGridLayout()。在其中放置三个控件:图像展示控件QWidget()、文本输入控件QLineText()、四个按钮组QWidget()。
同时,图像展示控件QWidget()用水平布局层QHBoxLayout()包含一个QLabel()标签来占位;按钮组控件QWidget()用一个垂直布局层QVBoxLayout()将4个按钮控件QPushButton()添加进去。最后,代码如下所示:
class ImgTag(QtWidgets.QMainWindow): def __init__(self): super().__init__() self.setWindowTitle("验证码图片标注 州的先生 zmister.com") # 主控件和主控件布局 self.main_widget = QtWidgets.QWidget() self.main_layout = QtWidgets.QGridLayout() self.main_widget.setLayout(self.main_layout) # 图像展示控件 self.img_widget = QtWidgets.QWidget() self.img_layout = QtWidgets.QHBoxLayout() self.img_widget.setLayout(self.img_layout) # 标签占位 self.img_view = QtWidgets.QLabel("请选择一个文件夹!") self.img_view.setAlignment(QtCore.Qt.AlignCenter) self.img_layout.addWidget(self.img_view) # 图像标注控件 self.img_input = QtWidgets.QLineEdit() # 控制按钮控件 self.opera_widget = QtWidgets.QWidget() self.opera_layout = QtWidgets.QVBoxLayout() self.opera_widget.setLayout(self.opera_layout) # 各个按钮 self.select_img_btn = QtWidgets.QPushButton("选择目录") self.previous_img_btn = QtWidgets.QPushButton("上一张") self.previous_img_btn.setEnabled(False) self.next_img_btn = QtWidgets.QPushButton("下一张") self.next_img_btn.setEnabled(False) self.save_img_btn = QtWidgets.QPushButton("保存") self.save_img_btn.setEnabled(False) # 添加按钮到布局 self.opera_layout.addWidget(self.select_img_btn) self.opera_layout.addWidget(self.previous_img_btn) self.opera_layout.addWidget(self.next_img_btn) self.opera_layout.addWidget(self.save_img_btn) # 将控件添加到主控件布局层 self.main_layout.addWidget(self.img_widget,0,0,4,4) self.main_layout.addWidget(self.opera_widget,0,4,5,1) self.main_layout.addWidget(self.img_input,4,0,1,4) # 状态栏 self.img_total_current_label = QtWidgets.QLabel() self.img_total_label = QtWidgets.QLabel() self.statusBar().addPermanentWidget(self.img_total_current_label) self.statusBar().addPermanentWidget(self.img_total_label, stretch=0) # 在状态栏添加永久控件 # 设置UI界面核心控件 self.setCentralWidget(self.main_widget)
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款