opencv 处理验证码

来源:互联网 发布:网络错误404是什么意思 编辑:程序博客网 时间:2024/06/05 09:34

1.安装

1.1 on Python

OpenCV 官方有Python27的支持(以pyd的形式)
还有非官方支持opencv-python ,opencv-contrib-python(有一些非开源的算法实现)
支持Python3和Python2

1.2 on C++

1.2.1 可以根据cmake构建项目
1.2.2完全手动构建项目
Windows(VS)安装参考:http://blog.csdn.net/poem_qianmo/article/details/19809337
特别注意:需要在linker中特别添加额外的lib库名称

2.图片操作

2.1 opencv-python 图像操作

import numpy as npimages:np.array# 图像剪切new_image = images[h0:h1, w0:w1].copy()#图像平移、变化offset_x = abs(out_width - splited_image.shape[1])/2offset_y = abs(out_height - splited_image.shape[0])/2#print(splited_image, splited_image.shape)# 1 0, 0 1是固定值TransMat = np.array([[1,0,offset_x],                     [0,1,offset_y]])#新的图像的顺序是高宽倒序,灰度图255意味着白底#这个函数用作将验证码字符移到固定大小的白板中央new_image = cv2.warpAffine(splited_image, TransMat,                           (out_height, out_width)[::-1],#reversed                           borderValue=255)#平移时会用到高斯内核去噪点,图像模糊这时可以用def format_letter(im, out_height=32, out_width=32):    offset_x = int(abs(out_height - im.shape[0]) / 2)    offset_y = int(abs(out_width - im.shape[1]) / 2)    im_height, im_width = im.shape    out = np.ones((out_height, out_width)) * 255    out[offset_x: offset_x+im_height, offset_y: offset_y+im_width] = im    return out #本来matlab可以直接操作矩阵,但是numpy虽然也可以(通过 numpy.insert),但总是返回新的矩阵,开销太大,还不如直接复制# 利用malplotlib画图import matplotlib as pltplt.ion()# ...plt.imshow(image)plt.pause(2) #持续2s#或者直接plt.imshow(image)#..plt.show()#显示所有的图像,但需要手动关闭
0 0
原创粉丝点击