美文网首页
21、对象测量

21、对象测量

作者: BigBigGuy | 来源:发表于2019-01-08 21:00 被阅读0次

弧长与面积

image.png image.png image.png
def measure_function(image):
    dst = cv.GaussianBlur(image,(7,7),0)
    gray = cv.cvtColor(dst, cv.COLOR_BGR2GRAY)
    ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY_INV | cv.THRESH_OTSU)
    print("二值阈值:%s" % ret)
    cv.imshow("Binary image", binary)
    outImage, contours, hireachy = cv.findContours(binary, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE)
    for i, contour in enumerate(contours):
        area = cv.contourArea(contour)  # 面积
        x, y, w, h = cv.boundingRect(contour)  # 外接矩形
        rate = min(w,h)/max(w,h)
        print("宽高比:%s"%rate)
        mm = cv.moments(contour)  # 几何矩
        print(type(mm))
        cx = mm['m10']/mm['m00']
        cy = mm['m01']/mm['m00']
        cv.circle(image, (np.int(cx), np.int(cy)), 3, (0, 255, 255), -1)#中心
        cv.rectangle(image, (x, y), (x+w, y+h), (0, 0, 255), 2)
        print("面积:%s"%area)
    cv.imshow("measure-contours", image)

image.png

cv.approxPolyDP

def measure_function(image):
    dst = cv.GaussianBlur(image, (7, 7), 0)
    gray = cv.cvtColor(dst, cv.COLOR_BGR2GRAY)
    ret, binary = cv.threshold(
        gray, 0, 255, cv.THRESH_BINARY_INV | cv.THRESH_OTSU)
    print("二值阈值:%s" % ret)
    cv.imshow("Binary image", binary)
    outImage, contours, hireachy = cv.findContours(
        binary, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE)
    for i, contour in enumerate(contours):
        x, y, w, h = cv.boundingRect(contour)  # 外接矩形
        mm = cv.moments(contour)  # 几何矩
        print(type(mm))
        cx = mm['m10']/mm['m00']
        cy = mm['m01']/mm['m00']
        cv.circle(image, (np.int(cx), np.int(cy)), 3, (0, 255, 255), -1)  # 中心

        '''
            cv.approxPolyDP:
                curve:contour
                epsilon = 4 :越小越逼近真实形状
                closed = True
        '''
        approxCurve = cv.approxPolyDP(contour, 4, closed=True)
        print(approxCurve.shape)
        if approxCurve.shape[0] > 6:  # 边数大于6,近似圆形,椭圆
            cv.drawContours(image, contours, i, (0, 255, 0), 2)
        if approxCurve.shape[0] == 3:  # 三角形
            cv.drawContours(image, contours, i, (0, 0, 255), 2)
        if approxCurve.shape[0] == 4:  # 四角形
            cv.drawContours(image, contours, i, (0, 255, 125), 2)
    cv.imshow("measure-contours", image)
image.png

相关文章

  • 21、对象测量

    弧长与面积 cv.approxPolyDP

  • 现代教育测量与评价2

    教育测量 1.三要素:量具,测量的单位,测量的参照点 2.特点:测量对象的模糊性,间接性和推断性,测量误差的不可避...

  • 365心理测量学知识

    测量与测量量表 一、测量额概念。包含三个元素,事物、数字和法则。 事物是指我们要测量的对象。数字是代表某一事物或该...

  • opencv+python -- 对象测量

    Code 获取图像的外接矩形boundingRect和几何距moments 多边形逼近approxPolyDP A...

  • 2.28号

    1 桥前排泥管道安装 2 测量21号路之后地形

  • 一文教你掌握广义估计方程

    广义估计方程是一种研究纵向数据(比如重复测量数据,面板数据)的方法。 同一测量对象的多次测量数据结果之间很可能有着...

  • 企业研究方法

    选择(15题,30分) 测量尺度: 四种尺度,判断各种情况。(用于选择) 名义尺度:对测量对象性质或类型的测验。 ...

  • onMeasure() 为什么会执行多次?Android 一个困

    前言 我们知道父布局根据自身和子布局的要求给子布局生成测量模式和测量尺寸,并封装在MeasureSpec对象里,最...

  • 如何使用万象表测电流

    万用表怎么测量电流,使用万用表测量电流的方法: 首先要确定被测量对象是交流电还是直流电,然后选择档位,先用最高电流...

  • 测量系统分析_偏倚分析

    定义 偏倚,测量结果的观测平均值与基准值的差值。偏倚大小表示测量系统的准确度。 研究对象 量具 独立样本法 步骤:...

网友评论

      本文标题:21、对象测量

      本文链接:https://www.haomeiwen.com/subject/nldbrqtx.html