PYTHON openCv操作集合

PYTHON openCv操作集合

1.二值化

函数为

cv2.threshold()
参数意义
第一个原图像
第二个进行分类的阈值
第三个高于(低于)阈值时赋予的新值
第四个方法选择参数,见下表

方法选择参数如下所示:

意义
cv2.THRESH_BINARY黑白二值
cv2.THRESH_BINARY_INV黑白二值反转
cv2.THRESH_TRUNC得到的图像为多像素值
cv2.THRESH_TOZERO
cv2.THRESH_TOZERO_INV
ret, thresh = cv2.threshold(img_ori, 1, 500, 0)  # 二值化

2.寻找轮廓

contours,hierarchy = cv2.findContours(image, mode, method[, contours[, hierarchy[, offset ]]]) 

传入参数:
1.imgae: 原图,一般为二值化图像
2.mode:轮廓检索模式
cv2.RETR_EXTERNAL 表示只检测外轮廓
cv2.RETR_LIST 检测的轮廓不建立等级关系
cv2.RETR_CCOMP 建立两个等级的轮廓,上面的一层为外边界,里面的一层为内孔的边界信息。如果内孔内还有一个连通物体,这个物体的边界也在顶层。
cv2.RETR_TREE 建立一个等级树结构的轮廓。

3.method:轮廓近似方法
cv2.CHAIN_APPROX_NONE 存储所有的轮廓点,相邻的两个点的像素位置差不超过1,即max(abs(x1-x2),abs(y2-y1))==1
cv2.CHAIN_APPROX_SIMPLE 压缩水平方向,垂直方向,对角线方向的元素,只保留该方向的终点坐标,例如一个矩形轮廓只需4个点来保存轮廓信息
cv2.CHAIN_APPROX_TC89_L1,CV_CHAIN_APPROX_TC89_KCOS 使用teh-Chinl chain 近似算法

返回值:
contours:轮廓
hierarchy:每条轮廓对应的属性

contours, hierarchy = cv2.findContours(thresh, mode=cv2.RETR_EXTERNAL, method=cv2.CHAIN_APPROX_NONE)    # 寻找轮廓点

图像的凸闭包

hull = cv2.convexHull(points, clockwise, returnpoints)

其中,各个参数的意义如下:

hull : 输出凸包结果,n * 1 2 数据结构,n为外包围圈点数
points: 输入的坐标点,通常为1
n * 2 结构,n为所有的坐标点的数目
clockwise:转动方向,TRUE为顺时针,否则为逆时针;
returnPoints:默认为TRUE,返回凸包上点的坐标,如果设置为FALSE,会返回与凸包点对应的轮廓上的点。

3.画圆或者点

函数:

cv2.circle(img, center, radius, color[, thickness[, lineType[, shift]]])

函数参数含义如下:

img:要画的圆所在的矩形或图像
center:圆心坐标,如 (100, 100),一定是元组类型
radius:半径,如 10
color:圆边框颜色,如 (0, 0, 255) 红色,BGR
thickness:正值表示圆边框宽度. 负值表示画一个填充圆形
lineType:圆边框线型,可为 0,4,8
shift:圆心坐标和半径的小数点位数

4. 读取或保存图片

cv2.imread(filepath,flags)
filepath:要读入图片的完整路径
flags:读入图片的标志
cv2.IMREAD_COLOR:默认参数,读入一副彩色图片,忽略alpha通道
cv2.IMREAD_GRAYSCALE:读入灰度图片
cv2.IMREAD_UNCHANGED:顾名思义,读入完整图片,包括alpha通道
import numpy as npimport cv2img = cv2.imread(‘1.jpg’,cv2.IMREAD_GRAYSCALE)

cv2.imwrite(filepath, img, flag)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

于谦烫头

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值