Python opencv模块cv2安装和部分函数使用
前几天做了一下验证码识别,在这里分享一下用到的opencv模块cv2部分函数的使用方法,也是给自己加深一下记忆。
一、cv2模块安装
在这里提醒一下这里有坑
欧
你如果直接用 pip install cv2 会报错欧
往下看解决办法
可以通过 pip install opencv-python 来进行安装
如果pip不能
安装还可以通过 https://pypi.tuna.tsinghua.edu.cn/simple/opencv-python寻找自己python对应的 .whl文件下载进行安装,我这安装的是opencv_python-3.1.0.5-cp36-cp36m-win_amd64.whl 其中cp36是我的python版本是3.6版的,自我感觉3.6版本的.whl文件还比较好找,只是自我观点amd64是我安装的python是64位的
二、cv2模块的使用和函数介绍
1、cv2模块的使用
检测cv2是否安装成功
import cv2
如果不报错就是已经安装成功
2、cv2模块的函数介绍
下面来介绍一下cv2模块的函数介绍
(1)cv2.imread() 读入图片
参数1:图片所在位置
提示:如果想显示网页上的图片还可以写参数1还可以写成网页的网址欧
import cv2
# 读入图像
img = cv2.imread("./2.jpg")
# 显示图像
cv2.imshow("bug", img)
cv2.waitKey(10) # 单位毫秒
cv2.destroyWindow("bug")
# 复制图像
new_img = img.copy()
# 保存图像
cv2.imwrite("bug-new.png", new_img)
(2)cv2.VideoCapture() 读取图片
参数1:可以为0和1,也可以去获取网络摄像头的网址
cv2.VideoCapture(0)表示获取电脑的摄像头
cv2.VideoCapture(1) 表示获取电脑外部连接的摄像头
cv2.VideoCapture(http://192.168.0.1:8080/?action=snapshot) 表示获取网络摄像头的视频
import cv2
cap = cv2.VideoCapture(0) #调整参数实现读取视频或调用摄像头
while (cap.isOpened()):
ret, frame = cap.read()
cv2.imshow("cap", frame)
if (cv2.waitKey(100) & 0xff) == ord('q'): #在一个给定的时间内(单位ms)等待用户按键触发
break
cap.release()
cv2.destroyAllWindows()
(3)cv2.cvtColor() 颜色转换
参数1:所以转换的图片
参数2:要转换的模式 cv2.COLOR_BGR2GRAY:转换为灰度图。cv2.COLOR_BGR2HSV:转换为HSV颜色空间。
(4)cv2.threshold() 二值化
参数1:要灰度的图片
参数2:阈值
参数3:最大值
参数4:转换方式 cv2.THRESH_BINARY、cv2.THRESH_BINARY_INV、cv2.THRESH_TRUNC、cv2.THRESH_TOZERO、cv2.THRESH_TOZERO_INV
(5)cv2.medianBlur() 滤波
参数1:要滤波的图片
参数2:滤波尺寸大小
(6)cv2.boundingRect() 求包含轮廓的正方框
参数1:要计算的某一轮廓
(7)cv2.findContours() 提取图片轮廓
参数1:要提取轮廓的图片
参数2:提取规则。cv2.RETR_EXTERNAL:只找外轮廓,cv2.RETR_TREE:内外轮廓都找。
参数3:输出轮廓内容格式。cv2.CHAIN_APPROX_SIMPLE:输出少量轮廓点。cv2.CHAIN_APPROX_NONE:输出大量轮廓点。
输出参数1:提取轮廓后的图片
输出参数2:轮廓列表
输出参数3:层级
下面附上我的一个验证码识别的代码
# -*- coding: utf-8 -*-
import os
import cv2
import numpy as np
def split_picture(imagepath):
# 以灰度模式读取图片
gray = cv2.imread(imagepath, 0)
# 将图片的边缘变为白色
height, width = gray