OpenCV 4.13.0
开源计算机视觉库 (Open Source Computer Vision)
正在加载...
正在搜索...
未找到匹配项
图形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.)
 为 2D 点集拟合直线。
 
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.)
 为 3D 点集拟合直线。
 

函数文档 (Function Documentation)

◆ 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>

在二值图像中查找轮廓。

该函数使用 [264] 算法从二值图像中检索轮廓。轮廓是形状分析和对象检测与识别的有用工具。请参阅 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>

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

该函数使用 [264] 算法从二值图像中检索轮廓并计算其层次结构。轮廓是形状分析和对象检测与识别的有用工具。请参阅 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
  • 可选输出 GArraycv::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>

为 2D 点集拟合直线。

该函数通过最小化 \(\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}{if \(r < C\)}{C \cdot (r-C/2)}{otherwise} \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输入2D点集,存储在以下容器之一中:Mat, std::vector<cv::Point2i>, std::vector<cv::Point2f>, std::vector<cv::Point2d>。
distTypeM 估计器使用的距离,请参阅 DistanceTypesDIST_USERDIST_C 不受支持。
param某些类型距离的数值参数 (C)。如果为 0,则选择最佳值。
reps半径的足够精度(坐标原点与直线之间的距离)。对于 reps,1.0 是一个很好的默认值。如果为 0,则选择默认值。
aeps角度的足够精度。对于 aeps,0.01 是一个很好的默认值。如果为 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>

为 3D 点集拟合直线。

该函数通过最小化 \(\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}{if \(r < C\)}{C \cdot (r-C/2)}{otherwise} \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输入 3D 点集,存储在以下容器之一中:Mat, std::vector<cv::Point3i>, std::vector<cv::Point3f>, std::vector<cv::Point3d>。
distTypeM 估计器使用的距离,请参阅 DistanceTypesDIST_USERDIST_C 不受支持。
param某些类型距离的数值参数 (C)。如果为 0,则选择最佳值。
reps半径的足够精度(坐标原点与直线之间的距离)。对于 reps,1.0 是一个很好的默认值。如果为 0,则选择默认值。
aeps角度的足够精度。对于 aeps,0.01 是一个很好的默认值。如果为 0,则选择默认值。
返回
输出线参数:一个包含 6 个元素的向量(如 Vec6f)-(vx, vy, vz, x0, y0, z0),其中 (vx, vy, vz) 是与直线共线的归一化向量,(x0, y0, z0) 是直线上的一个点。