OpenCV 4.12.0
开源计算机视觉
加载中...
搜索中...
无匹配项
G-API视频处理功能

详细描述

函数

GMat cv::gapi::BackgroundSubtractor (const GMat &src, const cv::gapi::video::BackgroundSubtractorParams &bsParams)
 基于高斯混合模型或 K 近邻的背景/前景分割算法。此操作生成前景掩膜。
 
std::tuple< GArray< GMat >, GScalarcv::gapi::buildOpticalFlowPyramid (const GMat &img, const Size &winSize, const GScalar &maxLevel, bool withDerivatives=true, int pyrBorder=BORDER_REFLECT_101, int derivBorder=BORDER_CONSTANT, bool tryReuseInputImage=true)
 构建可传递给 calcOpticalFlowPyrLK 的图像金字塔。
 
std::tuple< GArray< Point2f >, GArray< uchar >, GArray< float > > cv::gapi::calcOpticalFlowPyrLK (const GArray< GMat > &prevPyr, const GArray< GMat > &nextPyr, const GArray< Point2f > &prevPts, const GArray< Point2f > &predPts, const Size &winSize=Size(21, 21), const GScalar &maxLevel=3, const TermCriteria &criteria=TermCriteria(TermCriteria::COUNT|TermCriteria::EPS, 30, 0.01), int flags=0, double minEigThresh=1e-4)
 
std::tuple< GArray< Point2f >, GArray< uchar >, GArray< float > > cv::gapi::calcOpticalFlowPyrLK (const GMat &prevImg, const GMat &nextImg, const GArray< Point2f > &prevPts, const GArray< Point2f > &predPts, const Size &winSize=Size(21, 21), const GScalar &maxLevel=3, const TermCriteria &criteria=TermCriteria(TermCriteria::COUNT|TermCriteria::EPS, 30, 0.01), int flags=0, double minEigThresh=1e-4)
 使用金字塔的迭代 Lucas-Kanade 方法计算稀疏特征集的光流。
 
GMat cv::gapi::KalmanFilter (const GMat &measurement, const GOpaque< bool > &haveMeasurement, const cv::gapi::KalmanParams &kfParams)
 
GMat cv::gapi::KalmanFilter (const GMat &measurement, const GOpaque< bool > &haveMeasurement, const GMat &control, const cv::gapi::KalmanParams &kfParams)
 标准卡尔曼滤波算法 http://en.wikipedia.org/wiki/Kalman_filter
 

函数文档

◆ BackgroundSubtractor()

GMat cv::gapi::BackgroundSubtractor ( const GMat & src,
const cv::gapi::video::BackgroundSubtractorParams & bsParams )

#include <opencv2/gapi/video.hpp>

基于高斯混合模型或 K 近邻的背景/前景分割算法。此操作生成前景掩膜。

返回
输出图像是前景掩膜,即 8 位无符号 1 通道(二值)矩阵 CV_8UC1
注意
功能文本ID为 "org.opencv.video.BackgroundSubtractor"
参数
src输入图像:浮点帧不经过缩放使用,应在 [0,255] 范围内。
bsParams背景减法器内核的初始化参数集。

◆ buildOpticalFlowPyramid()

std::tuple< GArray< GMat >, GScalar > cv::gapi::buildOpticalFlowPyramid ( const GMat & img,
const Size & winSize,
const GScalar & maxLevel,
bool withDerivatives = true,
int pyrBorder = BORDER_REFLECT_101,
int derivBorder = BORDER_CONSTANT,
bool tryReuseInputImage = true )

#include <opencv2/gapi/video.hpp>

构建可传递给 calcOpticalFlowPyrLK 的图像金字塔。

注意
功能文本ID为 "org.opencv.video.buildOpticalFlowPyramid"
参数
img8 位输入图像。
winSize光流算法的窗口大小。必须不小于 calcOpticalFlowPyrLK 的 winSize 参数。需要它来计算金字塔层所需的填充。
maxLevel基于 0 的最大金字塔层数。
withDerivatives设置为预计算每个金字塔层的梯度。如果金字塔在没有梯度的情况下构建,则 calcOpticalFlowPyrLK 将在内部计算它们。
pyrBorder金字塔层的边界模式。
derivBorder梯度的边界模式。
tryReuseInputImage如果可能,将输入图像的 ROI 放入金字塔。您可以传递 false 以强制数据复制。
返回
  • 输出金字塔。
  • 构建金字塔中的层数。可以小于 maxLevel。

◆ calcOpticalFlowPyrLK() [1/2]

std::tuple< GArray< Point2f >, GArray< uchar >, GArray< float > > cv::gapi::calcOpticalFlowPyrLK ( const GArray< GMat > & prevPyr,
const GArray< GMat > & nextPyr,
const GArray< Point2f > & prevPts,
const GArray< Point2f > & predPts,
const Size & winSize = Size(21, 21),
const GScalar & maxLevel = 3,
const TermCriteria & criteria = TermCriteria(TermCriteria::COUNT|TermCriteria::EPS, 30, 0.01),
int flags = 0,
double minEigThresh = 1e-4 )

#include <opencv2/gapi/video.hpp>

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

注意
功能文本ID为 "org.opencv.video.calcOpticalFlowPyrLKForPyr"

◆ calcOpticalFlowPyrLK() [2/2]

std::tuple< GArray< Point2f >, GArray< uchar >, GArray< float > > cv::gapi::calcOpticalFlowPyrLK ( const GMat & prevImg,
const GMat & nextImg,
const GArray< Point2f > & prevPts,
const GArray< Point2f > & predPts,
const Size & winSize = Size(21, 21),
const GScalar & maxLevel = 3,
const TermCriteria & criteria = TermCriteria(TermCriteria::COUNT|TermCriteria::EPS, 30, 0.01),
int flags = 0,
double minEigThresh = 1e-4 )

#include <opencv2/gapi/video.hpp>

使用金字塔的迭代 Lucas-Kanade 方法计算稀疏特征集的光流。

参见 [37]

注意
功能文本ID为 "org.opencv.video.calcOpticalFlowPyrLK"
参数
prevImg第一个 8 位输入图像 (GMat) 或由 buildOpticalFlowPyramid 构建的金字塔 (GArray<GMat>)。
nextImg第二个输入图像 (GMat) 或金字塔 (GArray<GMat>),与 prevImg 具有相同的大小和类型。
prevPtsGArray,包含需要查找光流的 2D 点;点坐标必须是单精度浮点数。
predPtsGArray,包含用于流搜索的初始 2D 点;仅当传递 OPTFLOW_USE_INITIAL_FLOW 标志时才有意义;在这种情况下,向量的大小必须与输入相同。
winSize每个金字塔级别的搜索窗口大小。
maxLevel基于 0 的最大金字塔层数;如果设置为 0,则不使用金字塔(单层),如果设置为 1,则使用两层,依此类推;如果金字塔作为输入传递,则算法将使用金字塔所拥有的层数,但不超过 maxLevel。
criteria参数,指定迭代搜索算法的终止准则(在指定的迭代最大次数 criteria.maxCount 之后或当搜索窗口移动小于 criteria.epsilon 时)。
flags操作标志
  • OPTFLOW_USE_INITIAL_FLOW 使用存储在 nextPts 中的初始估计;如果未设置此标志,则 prevPts 会复制到 nextPts 并被视为初始估计。
  • OPTFLOW_LK_GET_MIN_EIGENVALS 使用最小特征值作为误差度量(参见 minEigThreshold 描述);如果未设置此标志,则使用原始点和移动点周围的块之间的 L1 距离,除以窗口中的像素数,作为误差度量。
minEigThresh算法计算光流方程的 2x2 正规矩阵(此矩阵在 [37] 中被称为空间梯度矩阵)的最小特征值,并将其除以窗口中的像素数;如果此值小于 minEigThreshold,则相应的特征将被过滤掉,其光流将不被处理,因此这允许去除不良点并获得性能提升。
返回
  • GArray,包含第二张图像中输入特征的计算新位置的 2D 点(具有单精度浮点坐标)。
  • status GArray(无符号字符类型);如果已找到相应特征的流,则向量的每个元素设置为 1,否则设置为 0。
  • GArray,包含误差(双精度浮点数);向量的每个元素都设置为相应特征的误差,误差度量类型可在 flags 参数中设置;如果未找到流,则误差未定义(使用 status 参数查找此类情况)。

◆ KalmanFilter() [1/2]

GMat cv::gapi::KalmanFilter ( const GMat & measurement,
const GOpaque< bool > & haveMeasurement,
const cv::gapi::KalmanParams & kfParams )

#include <opencv2/gapi/video.hpp>

这是一个重载的成员函数,为方便起见而提供。它与上述函数的区别仅在于它接受的参数。这是动态系统中没有控制的标准卡尔曼滤波算法的情况。在这种情况下,controlMatrix 为空且控制向量不存在。

注意
功能文本ID为 "org.opencv.video.KalmanFilterNoControl"
参数
measurement输入矩阵:包含测量值的 32 位或 64 位浮点单通道矩阵。
haveMeasurement动态输入标志,指示我们是否在特定迭代中获得测量值。
kfParams卡尔曼滤波内核的初始化参数集。
返回
输出矩阵是预测状态或校正状态。它们可以是 32 位或 64 位浮点单通道矩阵 CV_32FC1CV_64FC1
另请参见
cv::KalmanFilter

◆ KalmanFilter() [2/2]

GMat cv::gapi::KalmanFilter ( const GMat & measurement,
const GOpaque< bool > & haveMeasurement,
const GMat & control,
const cv::gapi::KalmanParams & kfParams )

#include <opencv2/gapi/video.hpp>

标准卡尔曼滤波算法 http://en.wikipedia.org/wiki/Kalman_filter

注意
功能文本ID为 "org.opencv.video.KalmanFilter"
参数
measurement输入矩阵:包含测量值的 32 位或 64 位浮点单通道矩阵。
haveMeasurement动态输入标志,指示我们是否在特定迭代中获得测量值。
control输入矩阵:包含用于改变动态系统的控制数据的 32 位或 64 位浮点单通道矩阵。
kfParams卡尔曼滤波内核的初始化参数集。
返回
输出矩阵是预测状态或校正状态。它们可以是 32 位或 64 位浮点单通道矩阵 CV_32FC1CV_64FC1

如果给定测量矩阵(haveMeasurements == true),将返回校正后的状态,这对应于流水线 cv::KalmanFilter::predict(control) -> cv::KalmanFilter::correct(measurement)。否则,将返回预测状态,这对应于对 cv::KalmanFilter::predict(control) 的调用。

另请参见
cv::KalmanFilter