OpenCV  4.10.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.)
 拟合一条线到 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
 
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 点集的一条线。
 

函数文档

◆ 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输入 2D 点集,存储在 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输入 2D 点集,存储在 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”
  • 如果给定的是 2D 点集,则 Mat 应为 2 维,如果存在 2 个通道,则只有一行或一列;如果存在单个通道,则应有 2 列。Mat 应具有 CV_32SCV_32F 深度
参数
src输入灰度图像 CV_8UC1;或输入 CV_32SCV_32F 2D 存储在 Mat 中,

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

在二值图像中查找轮廓。

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

在二进制图像中查找轮廓及其层次。

此函数使用算法 [257] 从二值图像中检索轮廓,并计算它们的层次结构。这些轮廓是形状分析和对象检测和识别的有用工具。请参阅 OpenCV 样本目录中的 squares.cpp。

注意
函数文本 ID 是 “org.opencv.imgproc.shape.findContoursH”
参数
src输入灰度图像 CV_8UC1。非零像素视为 1。零像素保持为 0,因此图像被视为二进制图像。您可以使用 compareinRangethresholdadaptiveThresholdCanny 等,从灰度或彩色图像中创建二值图像。如果模式等于 RETR_CCOMP,输入也可以是标记的 32 位整型图像( CV_32SC1 )。如果 RETR_FLOODFILLCV_32SC1 仅支持。
mode轮廓检索模式,请参见 RetrievalModes
method轮廓逼近方法,参见 ContourApproximationModes
offset每个轮廓点偏移的可选偏移量。如果轮廓从图像 ROI 中提取,然后在整个图像上下文中进行分析,这将非常有用。
返回
  • GArray 检测到的轮廓。每个轮廓存储为 GArray 点。
  • 可选输出 GArray of cv::Vec4i,包含有关图像拓扑结构的信息。它与轮廓数具有相同的元素数。对于每个 i 第 i 条轮廓 contours[i],元素 hierarchy[i][0] , hierarchy[i][1] , hierarchy[i][2] , 和 hierarchy[i][3] 设置为在同一层次结构级别上,下一个和前一个轮廓、第一个子轮廓和父轮廓的轮廓中基于 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)\) 来拟合一条线到一个 2D 点集,其中 \(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{where} \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{where} \quad C=2.9846\]

  • DIST_HUBER

    \[\rho (r) = \fork{r^2/2}{如果 \(r < C\)}{C \cdot (r-C/2)}{否则} \quad \text{where} \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 估计器所使用距离,请参见DistanceTypes。不支持DIST_USERDIST_C
参数对于某些类型的距离,用数值参数(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)\),将线拟合到 3D 点集上,其中 \(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{where} \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{where} \quad C=2.9846\]

  • DIST_HUBER

    \[\rho (r) = \fork{r^2/2}{如果 \(r < C\)}{C \cdot (r-C/2)}{否则} \quad \text{where} \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 估计器所使用距离,请参见DistanceTypes。不支持DIST_USERDIST_C
参数对于某些类型的距离,用数值参数(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) 是线上的一个点。