为了能好的体现函数,使用画板又画了一幅图像用来轮廓检测
运行上一节的笔记代码,可以检测出来形状的轮廓。
边界矩形可以将某一边界使用矩形绘制出来,确定一个矩形需要四个点,因此使用函数:
def f_contours():
"""
轮廓查找与绘制
:return:
"""
img = cv.imread("bound.png")
# draw会改变原图,这里做一个备份
img_copy = img
draw_img = img.copy()
# 转化呢灰度图
gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
# 阈值二值化处理
ret, thresh = cv.threshold(gray, 100, 255, cv.THRESH_BINARY)
cv_show(thresh)
# 这个函数只支持接收单颜色通道图像,否则报错
contours, hierarchy = cv.findContours(thresh, cv.RETR_TREE, cv.CHAIN_APPROX_NONE)
result = cv.drawContours(img_copy, contours, -1, (0, 0, 255), 2)
cv_show(result)
cnt = contours[0]
# 这个函数确定边界的四个点
x,y,w,h = cv.boundingRect(cnt)
img = cv.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)
cv_show(img)
cnt = contours[3]
(x, y), radius = cv.minEnclosingCircle(cnt)
# 圆心
center = (int(x), int(y))
radius=int(radius)
img = cv.circle(img, center, radius, (0, 255, 0), 2)
cv_show(img)
二、模板匹配
假设当前有一块图片块属于完整图片的某一部分,现想确认其是否属于这张图片内的内容,属于图片的哪一个位置。其方法就是判别当前模板和图片划分出来的部分匹配的相关性,可以使用相关性来判断两图片的相似度。
参考:https://www.cnblogs.com/gezhuangzhuang/p/10724769.html