亲宝软件园·资讯

展开

Python Opencv操作 Python Opencv轮廓常用操作代码实例解析

五月的白色铃兰 人气:1
想了解Python Opencv轮廓常用操作代码实例解析的相关内容吗,五月的白色铃兰在本文为您仔细讲解Python Opencv操作的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:Python,Opencv,轮廓,操作,下面大家一起来学习吧。

1.颜色空间转换

使用cv2.cvtColor(input_image ,flag),flag为转换类型

常用的转换类型有:

img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

2.二值化

返回值

ret:指定的thresh

dst: 目标图像

ret, dst = cv2.threshold(img_gray, 200, 255, cv2.THRESH_BINARY)

3.查找并绘制轮廓

3.1 cv2.findContours(image, mode, method[, offset])

概述:

寻找一个二值图像的轮廓。注意黑色表示背景,白色表示物体,即在黑色背景里寻找白色物体的轮廓

参数:

返回值:

补充: 若想得到轮廓点的集合的列表,可使用

cnt = np.squeeze(contours[0])

3.2 cv2.drawContours(image, contours, contourIdx, color[, thickness[, lineType[, hierarchy[, maxLevel[, offset]]]])

参数:

import cv2
img = cv2.imread('D:/2.jpg',1)

img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ret, dst = cv2.threshold(img_gray, 200, 255, cv2.THRESH_BINARY)

contours,hierarchy = cv2.findContours(dst, cv2.RETR_LIST, cv2.CHAIN_APPROX_NONE)
cv2.drawContours(img, contours, -1, (0, 255, 0), 3)

cv2.imshow('img',img)
cv2.waitKey(0)

4.点与轮廓位置关系

此功能可查找图像中的点与轮廓之间的最短距离。当点在轮廓外时返回负值,当点在内部时返回正值,如果点在轮廓上则返回零

dist = cv2.pointPolygonTest(cnt, (100, 100), True)

检查(100,100)与轮廓(cnt)的距离

在函数中,第二个参数需要tuple类型;第三个参数是measureDist。 如果为True,则查找距离. 如果为False,则查找该点是在内部还是外部或在轮廓上(它分别返回+1,-1,0)

如果不需要到距离,请确保第三个参数为False,因为这是一个耗时的过程。因此,将其设为False可提供2-3倍的加速

5.直线拟合fitline函数

output = cv2.fitLine(InputArray points, distType, param, reps, aeps)

参数:

返回值:

output:对于二维直线,输出output为4维,前两维代表拟合出的直线的方向,后两位代表直线上的一点。(即通常说的点斜式直线)

loc = np.array(loc)
output = cv2.fitLine(loc, cv2.DIST_L2, 0, 0.01, 0.01)
k = output[1] / output[0]
b = output[3] - k * output[2]#k[key]报错?

加载全部内容

相关教程
猜你喜欢
用户评论