OpenCV  4.10.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]

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 方法计算稀疏特征集的光流。

参见 [36]

注意
函数文本 ID 为“org.opencv.video.calcOpticalFlowPyrLK”
参数
prevImg第一个 8 位输入图像 (GMat) 或由 buildOpticalFlowPyramid 构建的金字塔 (GArray<GMat>)。
nextImg第二个输入图像 (GMat) 或与 prevImg 大小和类型相同的金字塔 (GArray<GMat>)。
prevPtsGArray 包含需要查找流的二维点;点坐标必须是单精度浮点数。
predPtsGArray 包含流搜索的初始二维点;仅在传递 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 包含第二张图像中输入特征的计算的新位置的二维点(具有单精度浮点坐标)。
  • status GArray (无符号字符);如果找到对应特征的流,则向量的每个元素都设置为 1,否则设置为 0。
  • GArray 的误差 (double);向量中的每个元素都设置为对应特征的误差,误差度量类型的设置可以在 flags 参数中进行;如果未找到流,则误差未定义(使用 status 参数查找此类情况)。

◆ KalmanFilter() [1/2]

GMat cv::gapi::KalmanFilter ( const GMat 测量值,
const GOpaque< bool > &  是否有测量值,
const cv::gapi::KalmanParams kfParams 
)

#include <opencv2/gapi/video.hpp>

这是一个重载的成员函数,为了方便提供。它与上面的函数的不同之处仅在于它接受的参数。标准卡尔曼滤波器算法在动态系统中没有控制时的案例。在这种情况下,控制矩阵为空,控制向量不存在。

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

◆ KalmanFilter() [2/2]

GMat cv::gapi::KalmanFilter ( const GMat 测量值,
const GOpaque< bool > &  是否有测量值,
const GMat 控制,
const cv::gapi::KalmanParams kfParams 
)

#include <opencv2/gapi/video.hpp>

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

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

如果给出测量矩阵 (haveMeasurements == true),则将返回校正的状态,该状态对应于管道 cv::KalmanFilter::predict(control) -> cv::KalmanFilter::correct(measurement)。否则,将返回预测的状态,该状态对应于 cv::KalmanFilter::predict(control) 的调用。

另请参阅
cv::KalmanFilter