OpenCV 4.12.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 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 点集。
 

函数文档

◆ 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 方法,
const GOpaque< Point > & offset )

#include <opencv2/gapi/imgproc.hpp>

在二值图像中查找轮廓。

该函数使用算法 [261] 从二值图像中检索轮廓。轮廓是形状分析以及对象检测和识别的有用工具。请参阅 OpenCV 示例目录中的 squares.cpp。

注意
函数文本ID为 "org.opencv.imgproc.shape.findContours"
参数
src输入的灰度图像 CV_8UC1。非零像素被视为 1,零像素仍为 0,因此图像被视为二值图像。您可以使用 compareinRangethresholdadaptiveThresholdCanny 等函数从灰度图像或彩色图像创建二值图像。如果模式等于 RETR_CCOMP,则输入也可以是 32 位整数标签图像 (CV_32SC1)。如果为 RETR_FLOODFILL,则仅支持 CV_32SC1
mode轮廓检索模式,请参阅 RetrievalModes
方法轮廓近似方法,请参阅 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 方法,
const GOpaque< Point > & offset )

#include <opencv2/gapi/imgproc.hpp>

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

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

注意
函数文本ID为 "org.opencv.imgproc.shape.findContoursH"
参数
src输入的灰度图像 CV_8UC1。非零像素被视为 1,零像素仍为 0,因此图像被视为二值图像。您可以使用 compareinRangethresholdadaptiveThresholdCanny 等函数从灰度图像或彩色图像创建二值图像。如果模式等于 RETR_CCOMP,则输入也可以是 32 位整数标签图像 (CV_32SC1)。如果为 RETR_FLOODFILL,则仅支持 CV_32SC1
mode轮廓检索模式,请参阅 RetrievalModes
方法轮廓近似方法,请参阅 ContourApproximationModes
offset可选的偏移量,每个轮廓点都将按此偏移。这在从图像 ROI 提取轮廓并在整个图像上下文中分析它们时很有用。
返回
  • 检测到的轮廓的 GArray。每个轮廓都存储为点的 GArray
  • 可选输出 GArray 类型的 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>

将直线拟合到 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}{如果 \(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 不受支持。
param某些距离类型的数值参数 (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>

将直线拟合到 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}{如果 \(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 不受支持。
param某些距离类型的数值参数 (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) 是直线上的一个点。