OpenCV 4.11.0
开源计算机视觉
加载中…
搜索中…
无匹配项
图形API:图像结构分析和形状描述符

详细描述

函数

GOpaque< Rectcv::gapi::boundingRect (const GArray< Point2f > &src)
 
GOpaque< Rectcv::gapi::boundingRect (const GArray< Point2i > &src)
 
GOpaque< Rectcv::gapi::boundingRect (const GMat &src)
 计算点集或灰度图像非零像素的右上方边界矩形。
 
GArray< GArray< Point > > cv::gapi::findContours (const GMat &src, const RetrievalModes mode, const ContourApproximationModes method)
 
GArray< GArray< Point > > cv::gapi::findContours (const GMat &src, const RetrievalModes mode, const ContourApproximationModes method, const GOpaque< Point > &offset)
 在二值图像中查找轮廓。
 
std::tuple< GArray< GArray< Point > >, GArray< Vec4i > > cv::gapi::findContoursH (const GMat &src, const RetrievalModes mode, const ContourApproximationModes method)
 
std::tuple< GArray< GArray< Point > >, GArray< Vec4i > > cv::gapi::findContoursH (const GMat &src, const RetrievalModes mode, const ContourApproximationModes method, const GOpaque< Point > &offset)
 在二值图像中查找轮廓及其层次结构。
 
GOpaque< Vec4fcv::gapi::fitLine2D (const GArray< Point2d > &src, const DistanceTypes distType, const double param=0., const double reps=0., const double aeps=0.)
 
GOpaque< Vec4fcv::gapi::fitLine2D (const GArray< Point2f > &src, const DistanceTypes distType, const double param=0., const double reps=0., const double aeps=0.)
 
GOpaque< Vec4fcv::gapi::fitLine2D (const GArray< Point2i > &src, const DistanceTypes distType, const double param=0., const double reps=0., const double aeps=0.)
 
GOpaque< Vec4fcv::gapi::fitLine2D (const GMat &src, const DistanceTypes distType, const double param=0., const double reps=0., const double aeps=0.)
 将直线拟合到二维点集。
 
GOpaque< Vec6fcv::gapi::fitLine3D (const GArray< Point3d > &src, const DistanceTypes distType, const double param=0., const double reps=0., const double aeps=0.)
 
GOpaque< Vec6fcv::gapi::fitLine3D (const GArray< Point3f > &src, const DistanceTypes distType, const double param=0., const double reps=0., const double aeps=0.)
 
GOpaque< Vec6fcv::gapi::fitLine3D (const GArray< Point3i > &src, const DistanceTypes distType, const double param=0., const double reps=0., const double aeps=0.)
 
GOpaque< Vec6fcv::gapi::fitLine3D (const GMat &src, const DistanceTypes distType, const double param=0., const double reps=0., const double aeps=0.)
 将直线拟合到三维点集。
 

函数文档

◆ boundingRect() [1/3]

GOpaque< Rect > cv::gapi::boundingRect ( const GArray< Point2f > & src)
Python
cv.gapi.boundingRect(src) -> retval

#include <opencv2/gapi/imgproc.hpp>

这是一个重载的成员函数,为了方便提供。它与上面的函数的区别仅在于它接受的参数。

计算点集的右上方边界矩形。

注意
函数文本ID为“org.opencv.imgproc.shape.boundingRectVector32F”
参数
src输入二维点集,存储在std::vector<cv::Point2f>中。

◆ boundingRect() [2/3]

GOpaque< Rect > cv::gapi::boundingRect ( const GArray< Point2i > & src)
Python
cv.gapi.boundingRect(src) -> retval

#include <opencv2/gapi/imgproc.hpp>

这是一个重载的成员函数,为了方便提供。它与上面的函数的区别仅在于它接受的参数。

计算点集的右上方边界矩形。

注意
函数文本ID为“org.opencv.imgproc.shape.boundingRectVector32S”
参数
src输入二维点集,存储在std::vector<cv::Point2i>中。

◆ boundingRect() [3/3]

GOpaque< Rect > cv::gapi::boundingRect ( const GMat & src)
Python
cv.gapi.boundingRect(src) -> retval

#include <opencv2/gapi/imgproc.hpp>

计算点集或灰度图像非零像素的右上方边界矩形。

该函数计算并返回指定点集或灰度图像非零像素的最小右上方边界矩形。

注意
  • 函数文本ID为“org.opencv.imgproc.shape.boundingRectMat”
  • 给定一个二维点集,Mat 应该为二维,如果存在2个通道,则应只有一行或一列;如果只有一个通道,则应有2列。Mat 的深度应为 CV_32SCV_32F
参数
src输入灰度图像 CV_8UC1;或存储在 Mat 中的 CV_32SCV_32F 二维点集。

◆ findContours() [1/2]

GArray< GArray< Point > > cv::gapi::findContours ( const GMat & src,
const RetrievalModes mode,
const ContourApproximationModes method )

#include <opencv2/gapi/imgproc.hpp>

这是一个重载的成员函数,为了方便提供。它与上面的函数的区别仅在于它接受的参数。

注意
函数文本ID为“org.opencv.imgproc.shape.findContoursNoOffset”

◆ findContours() [2/2]

GArray< GArray< Point > > cv::gapi::findContours ( const GMat & src,
const RetrievalModes mode,
const ContourApproximationModes method,
const GOpaque< Point > & offset )

#include <opencv2/gapi/imgproc.hpp>

在二值图像中查找轮廓。

该函数使用算法 [258] 从二值图像中检索轮廓。轮廓是形状分析、目标检测和识别的有用工具。参见OpenCV示例目录中的squares.cpp。

注意
函数文本ID为“org.opencv.imgproc.shape.findContours”
参数
src输入灰度图像 CV_8UC1。非零像素被视为1,零像素保持为0,因此图像被视为二值图像。可以使用 compareinRangethresholdadaptiveThresholdCanny 等函数将灰度或彩色图像转换为二值图像。如果 mode 等于 RETR_CCOMP,输入也可以是标签的32位整型图像(CV_32SC1)。如果 RETR_FLOODFILL,则仅支持 CV_32SC1
mode轮廓检索模式,参见 RetrievalModes
method轮廓逼近方法,参见 ContourApproximationModes
offset每个轮廓点偏移的可选偏移量。如果轮廓是从图像ROI中提取的,然后应该在整个图像上下文中分析它们,这将非常有用。
返回值
检测到的轮廓的 GArray。每个轮廓都存储为一个点的 GArray

◆ findContoursH() [1/2]

std::tuple< GArray< GArray< Point > >, GArray< Vec4i > > cv::gapi::findContoursH ( const GMat & src,
const RetrievalModes mode,
const ContourApproximationModes method )

#include <opencv2/gapi/imgproc.hpp>

这是一个重载的成员函数,为了方便提供。它与上面的函数的区别仅在于它接受的参数。

注意
函数文本ID为“org.opencv.imgproc.shape.findContoursHNoOffset”

◆ findContoursH() [2/2]

std::tuple< GArray< GArray< Point > >, GArray< Vec4i > > cv::gapi::findContoursH ( const GMat & src,
const RetrievalModes mode,
const ContourApproximationModes method,
const GOpaque< Point > & offset )

#include <opencv2/gapi/imgproc.hpp>

在二值图像中查找轮廓及其层次结构。

该函数使用算法 [258] 从二值图像中检索轮廓并计算它们的层次结构。轮廓是形状分析、目标检测和识别的有用工具。参见OpenCV示例目录中的squares.cpp。

注意
函数文本ID为“org.opencv.imgproc.shape.findContoursH”
参数
src输入灰度图像 CV_8UC1。非零像素被视为1,零像素保持为0,因此图像被视为二值图像。可以使用 compareinRangethresholdadaptiveThresholdCanny 等函数将灰度或彩色图像转换为二值图像。如果 mode 等于 RETR_CCOMP,输入也可以是标签的32位整型图像(CV_32SC1)。如果 RETR_FLOODFILL,则仅支持 CV_32SC1
mode轮廓检索模式,参见 RetrievalModes
method轮廓逼近方法,参见 ContourApproximationModes
offset每个轮廓点偏移的可选偏移量。如果轮廓是从图像ROI中提取的,然后应该在整个图像上下文中分析它们,这将非常有用。
返回值
  • 检测到的轮廓的 GArray。每个轮廓都存储为一个点的 GArray
  • 可选输出 GArray of cv::Vec4i,包含关于图像拓扑的信息。它与轮廓的数量一样多。对于每个第 i 个轮廓 contours[i],元素 hierarchy[i][0]、hierarchy[i][1]、hierarchy[i][2] 和 hierarchy[i][3] 分别设置为 contours 中相同层次结构级别上的下一个和上一个轮廓、第一个子轮廓和父轮廓的 0 基索引。如果轮廓 i 没有下一个、上一个、父级或嵌套轮廓,则 hierarchy[i] 的相应元素将为负。

◆ fitLine2D() [1/4]

GOpaque< Vec4f > cv::gapi::fitLine2D ( const GArray< Point2d > & src,
const DistanceTypes distType,
const double param = 0.,
const double reps = 0.,
const double aeps = 0. )

#include <opencv2/gapi/imgproc.hpp>

这是一个重载的成员函数,为了方便提供。它与上面的函数的区别仅在于它接受的参数。

注意
函数文本ID为“org.opencv.imgproc.shape.fitLine2DVector64F”

◆ fitLine2D() [2/4]

GOpaque< Vec4f > cv::gapi::fitLine2D ( const GArray< Point2f > & src,
const DistanceTypes distType,
const double param = 0.,
const double reps = 0.,
const double aeps = 0. )

#include <opencv2/gapi/imgproc.hpp>

这是一个重载的成员函数,为了方便提供。它与上面的函数的区别仅在于它接受的参数。

注意
函数文本ID为“org.opencv.imgproc.shape.fitLine2DVector32F”

◆ fitLine2D() [3/4]

GOpaque< Vec4f > cv::gapi::fitLine2D ( const GArray< Point2i > & src,
const DistanceTypes distType,
const double param = 0.,
const double reps = 0.,
const double aeps = 0. )

#include <opencv2/gapi/imgproc.hpp>

这是一个重载的成员函数,为了方便提供。它与上面的函数的区别仅在于它接受的参数。

注意
函数文本ID为“org.opencv.imgproc.shape.fitLine2DVector32S”

◆ fitLine2D() [4/4]

GOpaque< Vec4f > cv::gapi::fitLine2D ( const GMat & src,
const DistanceTypes distType,
const double param = 0.,
const double reps = 0.,
const double aeps = 0. )

#include <opencv2/gapi/imgproc.hpp>

将直线拟合到二维点集。

该函数通过最小化\(\sum_i \rho(r_i)\) 来拟合二维点集的直线,其中\(r_i\)是第\(i\)个点与直线的距离,而\(\rho(r)\)是距离函数,可以选择以下之一:

  • DIST_L2

    \[\rho (r) = r^2/2 \quad \text{(最简单、最快的最小二乘法)}\]

  • DIST_L1

    \[\rho (r) = r\]

  • DIST_L12

    \[\rho (r) = 2 \cdot ( \sqrt{1 + \frac{r^2}{2}} - 1)\]

  • DIST_FAIR

    \[\rho \left (r \right ) = C^2 \cdot \left ( \frac{r}{C} - \log{\left(1 + \frac{r}{C}\right)} \right ) \quad \text{其中} \quad C=1.3998\]

  • DIST_WELSCH

    \[\rho \left (r \right ) = \frac{C^2}{2} \cdot \left ( 1 - \exp{\left(-\left(\frac{r}{C}\right)^2\right)} \right ) \quad \text{其中} \quad C=2.9846\]

  • DIST_HUBER

    \[\rho (r) = \fork{r^2/2}{如果 \(r < C\)}{C \cdot (r-C/2)}{否则} \quad \text{其中} \quad C=1.345\]

该算法基于M估计器(http://en.wikipedia.org/wiki/M-estimator)技术,该技术使用加权最小二乘算法迭代地拟合直线。每次迭代后,权重\(w_i\)都会调整为与\(\rho(r_i)\)成反比。

注意
  • 函数文本ID为“org.opencv.imgproc.shape.fitLine2DMat”
  • 对于给定的N维点集,Mat 应为二维的,如果存在N个通道,则应只有一行或一列;如果只有一个通道,则应有N列。
参数
src输入的二维点集存储在以下可能的容器之一中:Mat,std::vector<cv::Point2i>,std::vector<cv::Point2f>,std::vector<cv::Point2d>。
distTypeM估计器使用的距离,参见DistanceTypesDIST_USERDIST_C 不受支持。
参数某些类型距离的数值参数(C)。如果为0,则选择最优值。
reps半径(坐标原点与直线之间的距离)的足够精度。1.0 将是 reps 的良好默认值。如果为 0,则选择默认值。
aeps角度的足够精度。0.01 将是 aeps 的良好默认值。如果为 0,则选择默认值。
返回值
输出直线参数:一个包含 4 个元素的向量 (类似于 Vec4f) - (vx, vy, x0, y0),其中 (vx, vy) 是与直线共线的归一化向量,(x0, y0) 是直线上的一个点。

◆ fitLine3D() [1/4]

GOpaque< Vec6f > cv::gapi::fitLine3D ( const GArray< Point3d > & src,
const DistanceTypes distType,
const double param = 0.,
const double reps = 0.,
const double aeps = 0. )

#include <opencv2/gapi/imgproc.hpp>

这是一个重载的成员函数,为了方便提供。它与上面的函数的区别仅在于它接受的参数。

注意
函数文本ID为“org.opencv.imgproc.shape.fitLine3DVector64F”

◆ fitLine3D() [2/4]

GOpaque< Vec6f > cv::gapi::fitLine3D ( const GArray< Point3f > & src,
const DistanceTypes distType,
const double param = 0.,
const double reps = 0.,
const double aeps = 0. )

#include <opencv2/gapi/imgproc.hpp>

这是一个重载的成员函数,为了方便提供。它与上面的函数的区别仅在于它接受的参数。

注意
函数文本ID为“org.opencv.imgproc.shape.fitLine3DVector32F”

◆ fitLine3D() [3/4]

GOpaque< Vec6f > cv::gapi::fitLine3D ( const GArray< Point3i > & src,
const DistanceTypes distType,
const double param = 0.,
const double reps = 0.,
const double aeps = 0. )

#include <opencv2/gapi/imgproc.hpp>

这是一个重载的成员函数,为了方便提供。它与上面的函数的区别仅在于它接受的参数。

注意
函数文本ID为“org.opencv.imgproc.shape.fitLine3DVector32S”

◆ fitLine3D() [4/4]

GOpaque< Vec6f > cv::gapi::fitLine3D ( const GMat & src,
const DistanceTypes distType,
const double param = 0.,
const double reps = 0.,
const double aeps = 0. )

#include <opencv2/gapi/imgproc.hpp>

将直线拟合到三维点集。

该函数通过最小化\(\sum_i \rho(r_i)\) 来拟合三维点集的直线,其中\(r_i\)是第\(i\)个点与直线的距离,而\(\rho(r)\)是距离函数,可以选择以下之一:

  • DIST_L2

    \[\rho (r) = r^2/2 \quad \text{(最简单、最快的最小二乘法)}\]

  • DIST_L1

    \[\rho (r) = r\]

  • DIST_L12

    \[\rho (r) = 2 \cdot ( \sqrt{1 + \frac{r^2}{2}} - 1)\]

  • DIST_FAIR

    \[\rho \left (r \right ) = C^2 \cdot \left ( \frac{r}{C} - \log{\left(1 + \frac{r}{C}\right)} \right ) \quad \text{其中} \quad C=1.3998\]

  • DIST_WELSCH

    \[\rho \left (r \right ) = \frac{C^2}{2} \cdot \left ( 1 - \exp{\left(-\left(\frac{r}{C}\right)^2\right)} \right ) \quad \text{其中} \quad C=2.9846\]

  • DIST_HUBER

    \[\rho (r) = \fork{r^2/2}{如果 \(r < C\)}{C \cdot (r-C/2)}{否则} \quad \text{其中} \quad C=1.345\]

该算法基于M估计器(http://en.wikipedia.org/wiki/M-estimator)技术,该技术使用加权最小二乘算法迭代地拟合直线。每次迭代后,权重\(w_i\)都会调整为与\(\rho(r_i)\)成反比。

注意
  • 函数文本ID为“org.opencv.imgproc.shape.fitLine3DMat”
  • 对于给定的N维点集,Mat 应为二维的,如果存在N个通道,则应只有一行或一列;如果只有一个通道,则应有N列。
参数
src输入的三维点集存储在以下可能的容器之一中:Mat,std::vector<cv::Point3i>,std::vector<cv::Point3f>,std::vector<cv::Point3d>。
distTypeM估计器使用的距离,参见DistanceTypesDIST_USERDIST_C 不受支持。
参数某些类型距离的数值参数(C)。如果为0,则选择最优值。
reps半径(坐标原点与直线之间的距离)的足够精度。1.0 将是 reps 的良好默认值。如果为 0,则选择默认值。
aeps角度的足够精度。0.01 将是 aeps 的良好默认值。如果为 0,则选择默认值。
返回值
输出直线参数:一个包含 6 个元素的向量 (类似于 Vec6f) - (vx, vy, vz, x0, y0, z0),其中 (vx, vy, vz) 是与直线共线的归一化向量,(x0, y0, z0) 是直线上的一个点。