zoukankan      html  css  js  c++  java
  • OpenCV boundingRect、minAreaRect的用法区别

    当得到对象轮廓后,可用boundingRect()得到包覆此轮廓的最小正矩形,minAreaRect()得到包覆轮廓的最小斜矩形。

    1)Rect boundingRect(InputArray points)

    points:输入信息,可以为包含点的容器(vector)或是Mat。
    返回包覆输入信息的最小正矩形。如下图:

    2)RotatedRect minAreaRect(InputArray points)

    points:输入信息,可以为包含点的容器(vector)或是Mat。

    返回包覆输入信息的最小斜矩形。如下图:

    【说明】

    如果参数是Mat类型的(注意需要是N行2列),必须满足depth == CV_32F || depth == CV_32S,且checkVector(2)才可以,否则会报错【minAreaRect()中主要调用的求凸包的函数convexHull()会检查Mat满不满足上面的条件】。

    Mat::depth()函数:求矩阵中元素的一个通道的数据类型,这个值和type是相关的。

    Mat::checkVector()函数:当Mat的channels,depth,和连续性  满足checkVector的参数内容时,返回(int)(total()*channels()/_elemChannels), 否则返回-1。checkVector(2),要求矩阵的列数位2。

    注意:第二种(红色框)求得是真正的最小外接矩形,如下图所示说明。

  • 相关阅读:
    js截取字符串区分汉字字母代码
    List 去处自定义重复对象方法
    63. Unique Paths II
    62. Unique Paths
    388. Longest Absolute File Path
    41. First Missing Positive
    140. Word Break II
    139. Word Break
    239. Sliding Window Maximum
    5. Longest Palindromic Substring
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/14334228.html
Copyright © 2011-2022 走看看