OpenCV 4.11.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 位无符号单通道(二值)矩阵 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]

cv::gapi::calcOpticalFlowPyrLK 返回一个元组 std::tuple< GArray< Point2f >, GArray< uchar >, GArray< float > > ( 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]

cv::gapi::calcOpticalFlowPyrLK 返回一个元组 std::tuple< GArray< Point2f >, GArray< uchar >, GArray< float > > ( 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 方法计算稀疏特征集的光流。

参见 [36]

注意
函数文本 ID 为 "org.opencv.video.calcOpticalFlowPyrLK"
参数
前一帧图像 prevImg第一个 8 位输入图像 (GMat) 或由 buildOpticalFlowPyramid 函数构建的金字塔 (GArray<GMat>)。
后一帧图像 nextImg第二个输入图像 (GMat) 或与 prevImg 大小和类型相同的金字塔 (GArray<GMat>)。
前一帧特征点 prevPts需要查找光流的二维点 GArray;点坐标必须是单精度浮点数。
预测的特征点位置 predPts光流搜索的二维点初始值 GArray;只有在传递 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 正规矩阵的最小特征值(此矩阵在 [36] 中称为空间梯度矩阵),除以窗口中的像素数量;如果此值小于 minEigThreshold,则会过滤掉相应的特征,并且不会处理其光流,因此它允许去除不良点并提高性能。
返回值
  • 包含在第二幅图像中计算出的输入特征新位置的二维点 GArray(具有单精度浮点坐标)。
  • 状态 GArray(无符号字符);如果已找到相应特征的光流,则向量的每个元素都设置为 1,否则设置为 0。
  • 误差 GArray(双精度数);向量的每个元素都设置为相应特征的误差,误差度量的类型可以在 flags 参数中设置;如果未找到光流,则误差未定义(使用 status 参数查找此类情况)。

◆ KalmanFilter() [1/2]

cv::gapi::KalmanFilter 返回一个 GMat ( const GMat & 测量值 measurement,
const GOpaque< bool > & 是否具有测量值 haveMeasurement,
const cv::gapi::KalmanParams & kfParams 卡尔曼滤波器参数

#include <opencv2/gapi/video.hpp>

这是一个重载的成员函数,为了方便使用。它与上面的函数的区别仅在于它接受的参数。这是标准卡尔曼滤波算法在动态系统中没有控制的情况下的情况。在这种情况下,控制矩阵为空,并且没有控制向量。

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

◆ KalmanFilter() [2/2]

cv::gapi::KalmanFilter 返回一个 GMat ( 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