栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python

import cv2
    import numpy as np
    #1、 读入图像
    # img = cv2.imread(r"D:1.jpg", cv2.IMREAD_UNCHANGED)
    # img = cv2.imread(r"9.bmp", cv2.IMREAD_UNCHANGED)
    img = cv2.imread(r"12.jpg", cv2.IMREAD_UNCHANGED)
    # cv2.imshow("contours", img)

    # 2、二值化 ret:暂时就认为是设定的thresh阈值,thresh:二值化的图像
    ret, thresh = cv2.threshold(cv2.cvtColor(img.copy(), cv2.COLOR_BGR2GRAY),  # 转换为灰度图像,
        130, 255,  # >130的=255  否则=0
        cv2.THRESH_BINARY)  # 黑白二值化

    # 3、搜索轮廓: 返回:图像,轮廓,轮廓的层析结构        输入:图像(二值图像),轮廓检索方式,轮廓近似方法
    contours, hierarchy = cv2.findContours(thresh,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
    # cv2.RETR_EXTERNAL---只检测外轮廓     # cv2.RETR_LIST---检测的轮廓不建立等级关系
    # cv2.RETR_CCOMP-建立两个等级轮廓,上一层为外边界,里层为内孔边界信息  # cv2.RETR_TREE----建立一个等级树结构的轮廓

    # cv2.CHAIN_APPROX_NONE---存储所有边界点      # cv2.CHAIN_APPROX_SIMPLE---压缩垂直、水平、对角方向,只保留端点
    # cv2.CHAIN_APPROX_TX89_L1---使用teh - Chini近似算法     # cv2.CHAIN_APPROX_TC89_KCOS---使用teh - Chini近似算法

    def rect_contours(c,img):
        # 绘制矩形
        rect = cv2.minAreaRect(c)  # 获得最小矩形轮廓 可能带旋转角度
        box = cv2.boxPoints(rect)  # 计算最小区域坐标
        box = np.int0(box)  # 坐标规范化为整数
        cv2.drawContours(img, [box], 0, (0, 0, 255), 3)  # 画出轮廓

    def circle_contours(c,img):
        # 绘制圆形
        (x, y), radius = cv2.minEnclosingCircle(c)  # 计算最小封闭圆形中心、半径
        center = (int(x), int(y))  # 转换成整数
        radius = int(radius)
        img = cv2.circle(img, center, radius, (0, 255, 0), 2)  #img上_画出圆形

    for c in contours:#循环搜索轮廓
        x, y, w, h = cv2.boundingRect(c) #获得一个图像的最小矩形边框
        # 传入一个轮廓图像,返回 x y 是左上角的点, w和h是矩形边框的宽度和高度
        # 画出矩形, img 原图, (x, y),左上角坐标, (x + w, y + h)右下角坐标, 颜色, 线宽
        cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2) #在img上_绘制普通矩形
        rect_contours(c,img) #在img上_绘制旋转矩形
        circle_contours(c,img)#在img上_绘制圆形
    # 画出轮廓
    # 五个输入:原始图像,轮廓(列表,以数组形式存储,记录每条轮廓所有像素点坐标(x,y),轮廓索引(当设置为-1时,绘制所有轮廓),画笔颜色,画笔大小
    cv2.drawContours(img, contours, -1, (255, 0, 0), 1)#在img上_绘制轮廓
    cv2.imshow("contours", img)
    cv2.waitKey()
    cv2.destroyAllWindows()
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/488804.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号