【Python3 爬虫学习笔记】人脸识别及验证码图片破解

用OpenCV读取和显示图形

OpenCV(Open Souce Computer Vision Library)是一个跨平台的计算机视觉库。OpenCV由英特尔公司发起并参与开发,可在商业和研究领域中免费使用。OpenCV可用于开发实时的图像处理及计算机视觉程序,目前已广泛应用于人机互动、人脸识别、动作识别、运动跟踪等领域。
要安装OpenCV,可在http://www.lfd.uci.edu/~gohlke/pythonlibs/找到本机Python版本对应的OpenCV文件,单击文件并下载至硬盘,然后在命令窗口中可通过命令行进行安装:(假设文件放在D盘根目录)

pip install d:/opencv_python‑3.4.4+contrib‑cp36‑cp36m‑win_amd64.whl

要在程序中使用OpenCV库,需要通过下列代码进行导入:

import cv2

导入链接库后,创建一个窗口来显示图像,语法为:

cv2.namedWindow(窗口名称[, 窗口标识])

窗口标识的值可能是如下值:

  • cv2.WINDOW_AUTOSIZE:系统默认值,窗口大小会根据图像大小自动调整,不能手动改变窗口大小。
  • cv2.WINDOW_FREERATIO:可随意改变图像大小,也可改变窗口大小。
  • cv2.WINDOW_FULLSCREEN:全屏幕窗口,不能改变窗口大小。
  • cv2.WINDOW_KEEPRATION:改变图像大小时会保持原来比例,窗口大小可变。
  • cv2.WINDOW_NORMAL:可以改变窗口大小。
  • cv2.WINDOW_OPENGL:支持OpenGL(开源图形库)。
    例如,我们以默认模式创建一个名称为Image的窗口:
cv2.namedWindow("Image")

如果窗口不再使用,可将其关闭。关闭窗口有两种方式:第一种方式是关闭指定的窗口,例如:

cv2.destroyWindow("Image")

第二种方式是关闭所有打开的窗口,如果同时打开了多个窗口,可用此方式关闭所有窗口,语法为:

cv2.destroyAllWindows()

要在窗口中显示图像,需先读取图像文件,语法为:

图像变量 = cv2.imread(图像文件路径[, 读取标识])

图像文件路径中若只有文件名,表示图像文件与Python程序文件在同一文件夹中;图像文件的路径还可使用相对路径,例如"media\img.jpg"。
读取标识的值可以是如下值:

  • cv2.IMREAD_COLOR:读取彩色图像,其值为1,这是系统默认值。
  • cv2.IMREAD_GRAYSCALE:以灰度模式读取图像,其值为0。
  • cv2.IMREAD_UNCHANGE:以图像原始模式读取图像,其值为-1。
    例如,以灰度模式读取media文件夹中的img.jpg图形文件,并保存至img变量:
img = cv2.imread("media\\img.jpg", 0)

OpenCV支持绝大多数的图像格式:.bmp、.jepg、.jpg、.dib、.png、.webp、.pbm、.pgm、.ppm、.sr、.ras、.tif、.tiff等。
在窗口中显示图像的语法为:

cv2.imshow(窗口名称, 图像变量)

例如,将img图像变量显示在Image窗口中:

cv2.imshow("Image", img)

为了让用户可以观察显示的图像,通常会在图像显示后加入等待代码,知道用户按任意键或时间到的时候才继续执行程序,其语法为:

cv2.waitKey(n)

n为等待时间,单位是毫秒。若n的值为0,表示时间为无限长,及用户按任意键可继续执行程序。

用OpenCV显示图形

用OpenCV读取图形文件,并分别以彩色及灰度模式显示(图形文件img01.jpg位于media文件夹中)。

import cv2
cv2.namedWindow("ShowImage1")
cv2.namedWindow("ShowImage2")
image1 = cv2.imread("media\\img01.jpg")
image2 = cv2.imread("media\\img01.jpg", 0)
cv2.imshow("ShowImage1", image1)
cv2.imshow("ShowImage2", image2)
cv2.waitKey(0)
cv2.destroyAllWindows()

保存图像文件

图像经过OpenCV处理后可以进行保存,保存图像的语法为:

cv2.imwrite(存盘路径, 图像变量[, 存盘标识])

存盘标识的值可以是如下值:

  • cv2.CV_IMWRITE_JPEG_QUALITY:设置图片格式为.jpeg或.jpg格式的图片质量,其值为0到100(数值越大表示质量越高),默认值为95。
  • cv2.CV_IMWRITE_WEBP_QUALITY:设置图片格式为.webp格式的图片质量,其值为0到100。
  • cv2_CV_IMWRITE_PNG_COMPRESSION:设置*.png格式图片的压缩比,其值为0到9(数值越大标识压缩比越大),默认值为3。

例如,把img变量保存为img.jpg文件,图片品质为70:

cv2.imwrite("img.jpg", img, [int(cv2.IMWRITE_JPEG_QUALITY), 70])

用OpenCV保存图形文件

先用OpenCV读取图形文件,然后以不同图片质量进行保存。

import cv2
cv2.namedWindow("ShowImage")
image = cv2.imread("media\\img01.jpg", 0)
cv2.imshow("ShowImage", image)
cv2.imwrite("media\\img01copy1.jpg", image)
cv2.imwrite("media\\img01copy2.jpg", image, [int(cv2.IMWRITE_JPEG_QUALITY), 50])
cv2.waitKey(0)
cv2.destroyWindow("ShowImage")

从文件管理器中可看到:img01.jpg是源文件,img01copy1.jpg是质量为95的图形文件,文件大小略小于原始文件;img01copy2.jpg是质量为50的图形文件,文件大小约等于源文件的五分之一。

你可能感兴趣的:(Python3爬虫学习笔记)