opencv-python图像处理 ----边界矩形、外接圆、模板匹配

为了能好的体现函数,使用画板又画了一幅图像用来轮廓检测
opencv-python图像处理 ----边界矩形、外接圆、模板匹配_第1张图片
运行上一节的笔记代码,可以检测出来形状的轮廓。
边界矩形可以将某一边界使用矩形绘制出来,确定一个矩形需要四个点,因此使用函数:

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)

效果如图:
opencv-python图像处理 ----边界矩形、外接圆、模板匹配_第2张图片
外接圆的使用换成外接圆的函数即可:

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)

效果如图:
opencv-python图像处理 ----边界矩形、外接圆、模板匹配_第3张图片

二、模板匹配
假设当前有一块图片块属于完整图片的某一部分,现想确认其是否属于这张图片内的内容,属于图片的哪一个位置。其方法就是判别当前模板和图片划分出来的部分匹配的相关性,可以使用相关性来判断两图片的相似度。
参考:https://www.cnblogs.com/gezhuangzhuang/p/10724769.html

你可能感兴趣的:(图像处理,opencv,python,图像处理)