类 Video
- java.lang.Object
-
- org.opencv.video.Video
-
public class Video extends java.lang.Object
-
-
字段摘要
字段 修饰符和类型 字段 描述 static int
MOTION_AFFINE
static int
MOTION_EUCLIDEAN
static int
MOTION_HOMOGRAPHY
static int
MOTION_TRANSLATION
static int
OPTFLOW_FARNEBACK_GAUSSIAN
static int
OPTFLOW_LK_GET_MIN_EIGENVALS
static int
OPTFLOW_USE_INITIAL_FLOW
static int
TrackerSamplerCSC_MODE_DETECT
static int
TrackerSamplerCSC_MODE_INIT_NEG
static int
TrackerSamplerCSC_MODE_INIT_POS
static int
TrackerSamplerCSC_MODE_TRACK_NEG
static int
TrackerSamplerCSC_MODE_TRACK_POS
-
构造函数摘要
构造函数 构造函数 描述 Video()
-
方法摘要
所有方法 静态方法 具体方法 修饰符和类型 方法 描述 static int
buildOpticalFlowPyramid(Mat img, java.util.List<Mat> pyramid, Size winSize, int maxLevel)
构造图像金字塔,可以将其传递给 calcOpticalFlowPyrLK。static int
buildOpticalFlowPyramid(Mat img, java.util.List<Mat> pyramid, Size winSize, int maxLevel, boolean withDerivatives)
构造图像金字塔,可以将其传递给 calcOpticalFlowPyrLK。static int
buildOpticalFlowPyramid(Mat img, java.util.List<Mat> pyramid, Size winSize, int maxLevel, boolean withDerivatives, int pyrBorder)
构造图像金字塔,可以将其传递给 calcOpticalFlowPyrLK。static int
buildOpticalFlowPyramid(Mat img, java.util.List<Mat> pyramid, Size winSize, int maxLevel, boolean withDerivatives, int pyrBorder, int derivBorder)
构造图像金字塔,可以将其传递给 calcOpticalFlowPyrLK。static int
buildOpticalFlowPyramid(Mat img, java.util.List<Mat> pyramid, Size winSize, int maxLevel, boolean withDerivatives, int pyrBorder, int derivBorder, boolean tryReuseInputImage)
构造图像金字塔,可以将其传递给 calcOpticalFlowPyrLK。static void
calcOpticalFlowFarneback(Mat prev, Mat next, Mat flow, double pyr_scale, int levels, int winsize, int iterations, int poly_n, double poly_sigma, int flags)
使用 Gunnar Farneback 算法计算密集光流。static void
calcOpticalFlowPyrLK(Mat prevImg, Mat nextImg, MatOfPoint2f prevPts, MatOfPoint2f nextPts, MatOfByte status, MatOfFloat err)
使用带有金字塔的迭代 Lucas-Kanade 方法计算稀疏特征集的光流。static void
calcOpticalFlowPyrLK(Mat prevImg, Mat nextImg, MatOfPoint2f prevPts, MatOfPoint2f nextPts, MatOfByte status, MatOfFloat err, Size winSize)
使用带有金字塔的迭代 Lucas-Kanade 方法计算稀疏特征集的光流。static void
calcOpticalFlowPyrLK(Mat prevImg, Mat nextImg, MatOfPoint2f prevPts, MatOfPoint2f nextPts, MatOfByte status, MatOfFloat err, Size winSize, int maxLevel)
使用带有金字塔的迭代 Lucas-Kanade 方法计算稀疏特征集的光流。static void
calcOpticalFlowPyrLK(Mat prevImg, Mat nextImg, MatOfPoint2f prevPts, MatOfPoint2f nextPts, MatOfByte status, MatOfFloat err, Size winSize, int maxLevel, TermCriteria criteria)
使用带有金字塔的迭代 Lucas-Kanade 方法计算稀疏特征集的光流。static void
calcOpticalFlowPyrLK(Mat prevImg, Mat nextImg, MatOfPoint2f prevPts, MatOfPoint2f nextPts, MatOfByte status, MatOfFloat err, Size winSize, int maxLevel, TermCriteria criteria, int flags)
使用带有金字塔的迭代 Lucas-Kanade 方法计算稀疏特征集的光流。static void
calcOpticalFlowPyrLK(Mat prevImg, Mat nextImg, MatOfPoint2f prevPts, MatOfPoint2f nextPts, MatOfByte status, MatOfFloat err, Size winSize, int maxLevel, TermCriteria criteria, int flags, double minEigThreshold)
使用带有金字塔的迭代 Lucas-Kanade 方法计算稀疏特征集的光流。static RotatedRect
CamShift(Mat probImage, Rect window, TermCriteria criteria)
查找目标中心、大小和方向。static double
computeECC(Mat templateImage, Mat inputImage)
计算两幅图像之间的增强相关系数 (ECC) 值,参考文献:EP08。static double
computeECC(Mat templateImage, Mat inputImage, Mat inputMask)
计算两幅图像之间的增强相关系数 (ECC) 值,参考文献:EP08。static BackgroundSubtractorKNN
createBackgroundSubtractorKNN()
创建 KNN 背景减除器,用于判断像素点是否接近样本。static BackgroundSubtractorKNN
createBackgroundSubtractorKNN(int history)
创建 KNN 背景减除器static BackgroundSubtractorKNN
createBackgroundSubtractorKNN(int history, double dist2Threshold)
创建 KNN 背景减除器static BackgroundSubtractorKNN
createBackgroundSubtractorKNN(int history, double dist2Threshold, boolean detectShadows)
创建 KNN 背景减除器static BackgroundSubtractorMOG2
createBackgroundSubtractorMOG2()
创建 MOG2 背景减除器,用于判断像素点是否由背景模型很好地描述。static BackgroundSubtractorMOG2
createBackgroundSubtractorMOG2(int history)
创建 MOG2 背景减除器static BackgroundSubtractorMOG2
createBackgroundSubtractorMOG2(int history, double varThreshold)
创建 MOG2 背景减除器static BackgroundSubtractorMOG2
createBackgroundSubtractorMOG2(int history, double varThreshold, boolean detectShadows)
创建 MOG2 背景减除器static double
findTransformECC(Mat templateImage, Mat inputImage, Mat warpMatrix)
static double
findTransformECC(Mat templateImage, Mat inputImage, Mat warpMatrix, int motionType)
static double
findTransformECC(Mat templateImage, Mat inputImage, Mat warpMatrix, int motionType, TermCriteria criteria)
static double
findTransformECC(Mat templateImage, Mat inputImage, Mat warpMatrix, int motionType, TermCriteria criteria, Mat inputMask)
static double
findTransformECC(Mat templateImage, Mat inputImage, Mat warpMatrix, int motionType, TermCriteria criteria, Mat inputMask, int gaussFiltSize)
根据 ECC 准则查找两幅图像之间的几何变换(扭曲),参考文献:EP08。static int
meanShift(Mat probImage, Rect window, TermCriteria criteria)
在反向投影图像上查找目标。static Mat
readOpticalFlow(java.lang.String path)
读取 .flo 文件static boolean
writeOpticalFlow(java.lang.String path, Mat flow)
将 .flo 文件写入磁盘
-
-
-
字段详情
-
OPTFLOW_USE_INITIAL_FLOW
public static final int OPTFLOW_USE_INITIAL_FLOW
- 另请参见
- 常量字段值
-
OPTFLOW_LK_GET_MIN_EIGENVALS
public static final int OPTFLOW_LK_GET_MIN_EIGENVALS
- 另请参见
- 常量字段值
-
OPTFLOW_FARNEBACK_GAUSSIAN
public static final int OPTFLOW_FARNEBACK_GAUSSIAN
- 另请参见
- 常量字段值
-
MOTION_TRANSLATION
public static final int MOTION_TRANSLATION
- 另请参见
- 常量字段值
-
MOTION_EUCLIDEAN
public static final int MOTION_EUCLIDEAN
- 另请参见
- 常量字段值
-
MOTION_AFFINE
public static final int MOTION_AFFINE
- 另请参见
- 常量字段值
-
MOTION_HOMOGRAPHY
public static final int MOTION_HOMOGRAPHY
- 另请参见
- 常量字段值
-
TrackerSamplerCSC_MODE_INIT_POS
public static final int TrackerSamplerCSC_MODE_INIT_POS
- 另请参见
- 常量字段值
-
TrackerSamplerCSC_MODE_INIT_NEG
public static final int TrackerSamplerCSC_MODE_INIT_NEG
- 另请参见
- 常量字段值
-
TrackerSamplerCSC_MODE_TRACK_POS
public static final int TrackerSamplerCSC_MODE_TRACK_POS
- 另请参见
- 常量字段值
-
TrackerSamplerCSC_MODE_TRACK_NEG
public static final int TrackerSamplerCSC_MODE_TRACK_NEG
- 另请参见
- 常量字段值
-
TrackerSamplerCSC_MODE_DETECT
public static final int TrackerSamplerCSC_MODE_DETECT
- 另请参见
- 常量字段值
-
-
方法详情
-
CamShift
public static RotatedRect CamShift(Mat probImage, Rect window, TermCriteria criteria)
查找目标中心、大小和方向。- 参数
probImage
- 目标直方图的反向投影。参见 calcBackProject。window
- 初始搜索窗口。criteria
- 底层 meanShift 的停止条件。返回(在旧接口中)CAMSHIFT 收敛所需的迭代次数。该函数实现了 CAMSHIFT 对象跟踪算法,参考文献:Bradski98。首先,它使用 meanShift 查找目标中心,然后调整窗口大小并找到最佳旋转。该函数返回一个旋转矩形结构,其中包含目标的位置、大小和方向。搜索窗口的下一个位置可以使用 RotatedRect::boundingRect() 获取。参见 OpenCV 示例 camshiftdemo.c,它跟踪彩色对象。**注意:**- (Python)可在 opencv_source_code/samples/python/camshift.py 中找到一个解释 camshift 跟踪算法的示例。
- 返回值
- 自动生成
-
meanShift
public static int meanShift(Mat probImage, Rect window, TermCriteria criteria)
在反向投影图像上查找目标。- 参数
probImage
- 目标直方图的反向投影。详情请参见 calcBackProject。window
- 初始搜索窗口。criteria
- 迭代搜索算法的停止条件。返回:CAMSHIFT 收敛所需的迭代次数。该函数实现了迭代对象搜索算法。它接收目标的反向投影和初始位置作为输入。计算反向投影图像窗口中的质心,并将搜索窗口中心移到质心。重复此过程,直到完成指定的迭代次数 criteria.maxCount 或窗口中心移动小于 criteria.epsilon。该算法用于 CamShift 内部,并且与 CamShift 不同,搜索窗口的大小或方向在搜索过程中不会改变。您可以简单地将 calcBackProject 的输出传递给此函数。但是,如果预先滤除反向投影并去除噪声,可以获得更好的结果。例如,您可以通过使用 findContours 获取连通分量,丢弃面积较小的轮廓 (contourArea),并使用 drawContours 绘制其余轮廓来实现这一点。- 返回值
- 自动生成
-
buildOpticalFlowPyramid
public static int buildOpticalFlowPyramid(Mat img, java.util.List<Mat> pyramid, Size winSize, int maxLevel, boolean withDerivatives, int pyrBorder, int derivBorder, boolean tryReuseInputImage)
构造图像金字塔,可以将其传递给 calcOpticalFlowPyrLK。- 参数
img
- 8 位输入图像。pyramid
- 输出金字塔。winSize
- 光流算法的窗口大小。必须不小于 calcOpticalFlowPyrLK 的 winSize 参数。它需要计算金字塔级别所需的填充。maxLevel
- 基于0的最大金字塔层级编号。withDerivatives
- 设置为预计算每一金字塔层的梯度。如果金字塔是在没有梯度的情况下构建的,则`calcOpticalFlowPyrLK`将在内部计算它们。pyrBorder
- 金字塔层的边界模式。derivBorder
- 梯度的边界模式。tryReuseInputImage
- 如果可能,将输入图像的ROI放入金字塔中。您可以传入false强制复制数据。- 返回值
- 构建的金字塔中的层级数。可能小于`maxLevel`。
-
buildOpticalFlowPyramid
public static int buildOpticalFlowPyramid(Mat img, java.util.List<Mat> pyramid, Size winSize, int maxLevel, boolean withDerivatives, int pyrBorder, int derivBorder)
构造图像金字塔,可以将其传递给 calcOpticalFlowPyrLK。- 参数
img
- 8 位输入图像。pyramid
- 输出金字塔。winSize
- 光流算法的窗口大小。必须不小于 calcOpticalFlowPyrLK 的 winSize 参数。它需要计算金字塔级别所需的填充。maxLevel
- 基于0的最大金字塔层级编号。withDerivatives
- 设置为预计算每一金字塔层的梯度。如果金字塔是在没有梯度的情况下构建的,则`calcOpticalFlowPyrLK`将在内部计算它们。pyrBorder
- 金字塔层的边界模式。derivBorder
- 梯度的边界模式。强制复制数据。- 返回值
- 构建的金字塔中的层级数。可能小于`maxLevel`。
-
buildOpticalFlowPyramid
public static int buildOpticalFlowPyramid(Mat img, java.util.List<Mat> pyramid, Size winSize, int maxLevel, boolean withDerivatives, int pyrBorder)
构造图像金字塔,可以将其传递给 calcOpticalFlowPyrLK。- 参数
img
- 8 位输入图像。pyramid
- 输出金字塔。winSize
- 光流算法的窗口大小。必须不小于 calcOpticalFlowPyrLK 的 winSize 参数。它需要计算金字塔级别所需的填充。maxLevel
- 基于0的最大金字塔层级编号。withDerivatives
- 设置为预计算每一金字塔层的梯度。如果金字塔是在没有梯度的情况下构建的,则`calcOpticalFlowPyrLK`将在内部计算它们。pyrBorder
- 金字塔层的边界模式。强制复制数据。- 返回值
- 构建的金字塔中的层级数。可能小于`maxLevel`。
-
buildOpticalFlowPyramid
public static int buildOpticalFlowPyramid(Mat img, java.util.List<Mat> pyramid, Size winSize, int maxLevel, boolean withDerivatives)
构造图像金字塔,可以将其传递给 calcOpticalFlowPyrLK。- 参数
img
- 8 位输入图像。pyramid
- 输出金字塔。winSize
- 光流算法的窗口大小。必须不小于 calcOpticalFlowPyrLK 的 winSize 参数。它需要计算金字塔级别所需的填充。maxLevel
- 基于0的最大金字塔层级编号。withDerivatives
- 设置为预计算每一金字塔层的梯度。如果金字塔是在没有梯度的情况下构建的,则`calcOpticalFlowPyrLK`将在内部计算它们。强制复制数据。- 返回值
- 构建的金字塔中的层级数。可能小于`maxLevel`。
-
buildOpticalFlowPyramid
public static int buildOpticalFlowPyramid(Mat img, java.util.List<Mat> pyramid, Size winSize, int maxLevel)
构造图像金字塔,可以将其传递给 calcOpticalFlowPyrLK。- 参数
img
- 8 位输入图像。pyramid
- 输出金字塔。winSize
- 光流算法的窗口大小。必须不小于 calcOpticalFlowPyrLK 的 winSize 参数。它需要计算金字塔级别所需的填充。maxLevel
- 基于0的最大金字塔层级编号。如果金字塔是在没有梯度的情况下构建的,则`calcOpticalFlowPyrLK`将在内部计算它们。强制复制数据。- 返回值
- 构建的金字塔中的层级数。可能小于`maxLevel`。
-
calcOpticalFlowPyrLK
public static void calcOpticalFlowPyrLK(Mat prevImg, Mat nextImg, MatOfPoint2f prevPts, MatOfPoint2f nextPts, MatOfByte status, MatOfFloat err, Size winSize, int maxLevel, TermCriteria criteria, int flags, double minEigThreshold)
使用带有金字塔的迭代 Lucas-Kanade 方法计算稀疏特征集的光流。- 参数
prevImg
- 第一个8位输入图像或由`buildOpticalFlowPyramid`构建的金字塔。nextImg
- 第二个输入图像或与`prevImg`大小和类型相同的金字塔。prevPts
- 需要查找光流的二维点向量;点坐标必须是单精度浮点数。nextPts
- 输出二维点向量(具有单精度浮点坐标),包含在第二张图像中计算出的输入特征的新位置;当传递`OPTFLOW_USE_INITIAL_FLOW`标志时,向量的大小必须与输入中的一样。status
- 输出状态向量(无符号字符);如果找到对应特征的光流,则向量的每个元素都设置为1,否则设置为0。err
- 输出误差向量;向量的每个元素都设置为对应特征的误差,误差度量的类型可以在`flags`参数中设置;如果找不到光流,则误差未定义(使用`status`参数查找此类情况)。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距离除以窗口中的像素数作为误差度量。
minEigThreshold
- 算法计算光流方程的2x2正规矩阵(在CITE: Bouguet00中称为空间梯度矩阵)的最小特征值,除以窗口中的像素数;如果此值小于`minEigThreshold`,则过滤掉相应的特征,并且不处理其光流,因此允许去除坏点并提高性能。该函数实现了金字塔中Lucas-Kanade光流的稀疏迭代版本。参见CITE: Bouguet00。该函数使用TBB库并行化。注意:一些示例- 使用Lucas-Kanade光流算法的示例可以在opencv_source_code/samples/cpp/lkdemo.cpp中找到。
- (Python) 使用Lucas-Kanade光流算法的示例可以在opencv_source_code/samples/python/lk_track.py中找到。
- (Python) 使用Lucas-Kanade跟踪器进行单应性匹配的示例可以在opencv_source_code/samples/python/lk_homography.py中找到。
-
calcOpticalFlowPyrLK
public static void calcOpticalFlowPyrLK(Mat prevImg, Mat nextImg, MatOfPoint2f prevPts, MatOfPoint2f nextPts, MatOfByte status, MatOfFloat err, Size winSize, int maxLevel, TermCriteria criteria, int flags)
使用带有金字塔的迭代 Lucas-Kanade 方法计算稀疏特征集的光流。- 参数
prevImg
- 第一个8位输入图像或由`buildOpticalFlowPyramid`构建的金字塔。nextImg
- 第二个输入图像或与`prevImg`大小和类型相同的金字塔。prevPts
- 需要查找光流的二维点向量;点坐标必须是单精度浮点数。nextPts
- 输出二维点向量(具有单精度浮点坐标),包含在第二张图像中计算出的输入特征的新位置;当传递`OPTFLOW_USE_INITIAL_FLOW`标志时,向量的大小必须与输入中的一样。status
- 输出状态向量(无符号字符);如果找到对应特征的光流,则向量的每个元素都设置为1,否则设置为0。err
- 输出误差向量;向量的每个元素都设置为对应特征的误差,误差度量的类型可以在`flags`参数中设置;如果找不到光流,则误差未定义(使用`status`参数查找此类情况)。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距离除以窗口中的像素数作为误差度量。
- 使用Lucas-Kanade光流算法的示例可以在opencv_source_code/samples/cpp/lkdemo.cpp中找到。
- (Python) 使用Lucas-Kanade光流算法的示例可以在opencv_source_code/samples/python/lk_track.py中找到。
- (Python) 使用Lucas-Kanade跟踪器进行单应性匹配的示例可以在opencv_source_code/samples/python/lk_homography.py中找到。
-
calcOpticalFlowPyrLK
public static void calcOpticalFlowPyrLK(Mat prevImg, Mat nextImg, MatOfPoint2f prevPts, MatOfPoint2f nextPts, MatOfByte status, MatOfFloat err, Size winSize, int maxLevel, TermCriteria criteria)
使用带有金字塔的迭代 Lucas-Kanade 方法计算稀疏特征集的光流。- 参数
prevImg
- 第一个8位输入图像或由`buildOpticalFlowPyramid`构建的金字塔。nextImg
- 第二个输入图像或与`prevImg`大小和类型相同的金字塔。prevPts
- 需要查找光流的二维点向量;点坐标必须是单精度浮点数。nextPts
- 输出二维点向量(具有单精度浮点坐标),包含在第二张图像中计算出的输入特征的新位置;当传递`OPTFLOW_USE_INITIAL_FLOW`标志时,向量的大小必须与输入中的一样。status
- 输出状态向量(无符号字符);如果找到对应特征的光流,则向量的每个元素都设置为1,否则设置为0。err
- 输出误差向量;向量的每个元素都设置为对应特征的误差,误差度量的类型可以在`flags`参数中设置;如果找不到光流,则误差未定义(使用`status`参数查找此类情况)。winSize
- 每个金字塔层搜索窗口的大小。maxLevel
- 基于0的最大金字塔层级编号;如果设置为0,则不使用金字塔(单层),如果设置为1,则使用两层,依此类推;如果金字塔传递给输入,则算法将使用与金字塔拥有的层数一样多的层数,但不超过`maxLevel`。criteria
- 指定迭代搜索算法终止条件的参数(在指定的最大迭代次数`criteria.maxCount`之后或当搜索窗口移动小于`criteria.epsilon`时)。- OPTFLOW_USE_INITIAL_FLOW 使用存储在`nextPts`中的初始估计;如果没有设置此标志,则将`prevPts`复制到`nextPts`并将其视为初始估计。
- OPTFLOW_LK_GET_MIN_EIGENVALS 使用最小特征值作为误差度量(参见`minEigThreshold`说明);如果没有设置此标志,则使用原始点和移动点周围块之间的L1距离除以窗口中的像素数作为误差度量。
- 使用Lucas-Kanade光流算法的示例可以在opencv_source_code/samples/cpp/lkdemo.cpp中找到。
- (Python) 使用Lucas-Kanade光流算法的示例可以在opencv_source_code/samples/python/lk_track.py中找到。
- (Python) 使用Lucas-Kanade跟踪器进行单应性匹配的示例可以在opencv_source_code/samples/python/lk_homography.py中找到。
-
calcOpticalFlowPyrLK
public static void calcOpticalFlowPyrLK(Mat prevImg, Mat nextImg, MatOfPoint2f prevPts, MatOfPoint2f nextPts, MatOfByte status, MatOfFloat err, Size winSize, int maxLevel)
使用带有金字塔的迭代 Lucas-Kanade 方法计算稀疏特征集的光流。- 参数
prevImg
- 第一个8位输入图像或由`buildOpticalFlowPyramid`构建的金字塔。nextImg
- 第二个输入图像或与`prevImg`大小和类型相同的金字塔。prevPts
- 需要查找光流的二维点向量;点坐标必须是单精度浮点数。nextPts
- 输出二维点向量(具有单精度浮点坐标),包含在第二张图像中计算出的输入特征的新位置;当传递`OPTFLOW_USE_INITIAL_FLOW`标志时,向量的大小必须与输入中的一样。status
- 输出状态向量(无符号字符);如果找到对应特征的光流,则向量的每个元素都设置为1,否则设置为0。err
- 输出误差向量;向量的每个元素都设置为对应特征的误差,误差度量的类型可以在`flags`参数中设置;如果找不到光流,则误差未定义(使用`status`参数查找此类情况)。winSize
- 每个金字塔层搜索窗口的大小。maxLevel
- 基于0的最大金字塔层级编号;如果设置为0,则不使用金字塔(单层),如果设置为1,则使用两层,依此类推;如果金字塔传递给输入,则算法将使用与金字塔拥有的层数一样多的层数,但不超过`maxLevel`。(在指定的最大迭代次数`criteria.maxCount`之后或当搜索窗口移动小于`criteria.epsilon`时)。- OPTFLOW_USE_INITIAL_FLOW 使用存储在`nextPts`中的初始估计;如果没有设置此标志,则将`prevPts`复制到`nextPts`并将其视为初始估计。
- OPTFLOW_LK_GET_MIN_EIGENVALS 使用最小特征值作为误差度量(参见`minEigThreshold`说明);如果没有设置此标志,则使用原始点和移动点周围块之间的L1距离除以窗口中的像素数作为误差度量。
- 使用Lucas-Kanade光流算法的示例可以在opencv_source_code/samples/cpp/lkdemo.cpp中找到。
- (Python) 使用Lucas-Kanade光流算法的示例可以在opencv_source_code/samples/python/lk_track.py中找到。
- (Python) 使用Lucas-Kanade跟踪器进行单应性匹配的示例可以在opencv_source_code/samples/python/lk_homography.py中找到。
-
calcOpticalFlowPyrLK
public static void calcOpticalFlowPyrLK(Mat prevImg, Mat nextImg, MatOfPoint2f prevPts, MatOfPoint2f nextPts, MatOfByte status, MatOfFloat err, Size winSize)
使用带有金字塔的迭代 Lucas-Kanade 方法计算稀疏特征集的光流。- 参数
prevImg
- 第一个8位输入图像或由`buildOpticalFlowPyramid`构建的金字塔。nextImg
- 第二个输入图像或与`prevImg`大小和类型相同的金字塔。prevPts
- 需要查找光流的二维点向量;点坐标必须是单精度浮点数。nextPts
- 输出二维点向量(具有单精度浮点坐标),包含在第二张图像中计算出的输入特征的新位置;当传递`OPTFLOW_USE_INITIAL_FLOW`标志时,向量的大小必须与输入中的一样。status
- 输出状态向量(无符号字符);如果找到对应特征的光流,则向量的每个元素都设置为1,否则设置为0。err
- 输出误差向量;向量的每个元素都设置为对应特征的误差,误差度量的类型可以在`flags`参数中设置;如果找不到光流,则误差未定义(使用`status`参数查找此类情况)。winSize
- 每个金字塔层搜索窗口的大小。如果设置为0,则不使用金字塔(单层),如果设置为1,则使用两层,依此类推;如果金字塔传递给输入,则算法将使用与金字塔拥有的层数一样多的层数,但不超过`maxLevel`。(在指定的最大迭代次数`criteria.maxCount`之后或当搜索窗口移动小于`criteria.epsilon`时)。- OPTFLOW_USE_INITIAL_FLOW 使用存储在`nextPts`中的初始估计;如果没有设置此标志,则将`prevPts`复制到`nextPts`并将其视为初始估计。
- OPTFLOW_LK_GET_MIN_EIGENVALS 使用最小特征值作为误差度量(参见`minEigThreshold`说明);如果没有设置此标志,则使用原始点和移动点周围块之间的L1距离除以窗口中的像素数作为误差度量。
- 使用Lucas-Kanade光流算法的示例可以在opencv_source_code/samples/cpp/lkdemo.cpp中找到。
- (Python) 使用Lucas-Kanade光流算法的示例可以在opencv_source_code/samples/python/lk_track.py中找到。
- (Python) 使用Lucas-Kanade跟踪器进行单应性匹配的示例可以在opencv_source_code/samples/python/lk_homography.py中找到。
-
calcOpticalFlowPyrLK
public static void calcOpticalFlowPyrLK(Mat prevImg, Mat nextImg, MatOfPoint2f prevPts, MatOfPoint2f nextPts, MatOfByte status, MatOfFloat err)
使用带有金字塔的迭代 Lucas-Kanade 方法计算稀疏特征集的光流。- 参数
prevImg
- 第一个8位输入图像或由`buildOpticalFlowPyramid`构建的金字塔。nextImg
- 第二个输入图像或与`prevImg`大小和类型相同的金字塔。prevPts
- 需要查找光流的二维点向量;点坐标必须是单精度浮点数。nextPts
- 输出二维点向量(具有单精度浮点坐标),包含在第二张图像中计算出的输入特征的新位置;当传递`OPTFLOW_USE_INITIAL_FLOW`标志时,向量的大小必须与输入中的一样。status
- 输出状态向量(无符号字符);如果找到对应特征的光流,则向量的每个元素都设置为1,否则设置为0。err
- 输出误差向量;向量的每个元素都设置为对应特征的误差,误差度量的类型可以在`flags`参数中设置;如果找不到光流,则误差未定义(使用`status`参数查找此类情况)。如果设置为0,则不使用金字塔(单层),如果设置为1,则使用两层,依此类推;如果金字塔传递给输入,则算法将使用与金字塔拥有的层数一样多的层数,但不超过`maxLevel`。(在指定的最大迭代次数`criteria.maxCount`之后或当搜索窗口移动小于`criteria.epsilon`时)。- OPTFLOW_USE_INITIAL_FLOW 使用存储在`nextPts`中的初始估计;如果没有设置此标志,则将`prevPts`复制到`nextPts`并将其视为初始估计。
- OPTFLOW_LK_GET_MIN_EIGENVALS 使用最小特征值作为误差度量(参见`minEigThreshold`说明);如果没有设置此标志,则使用原始点和移动点周围块之间的L1距离除以窗口中的像素数作为误差度量。
- 使用Lucas-Kanade光流算法的示例可以在opencv_source_code/samples/cpp/lkdemo.cpp中找到。
- (Python) 使用Lucas-Kanade光流算法的示例可以在opencv_source_code/samples/python/lk_track.py中找到。
- (Python) 使用Lucas-Kanade跟踪器进行单应性匹配的示例可以在opencv_source_code/samples/python/lk_homography.py中找到。
-
calcOpticalFlowFarneback
public static void calcOpticalFlowFarneback(Mat prev, Mat next, Mat flow, double pyr_scale, int levels, int winsize, int iterations, int poly_n, double poly_sigma, int flags)
使用 Gunnar Farneback 算法计算密集光流。- 参数
prev
- 第一个8位单通道输入图像。next
- 第二个输入图像,大小和类型与`prev`相同。flow
- 计算出的光流图像,大小与`prev`相同,类型为CV_32FC2。pyr_scale
- 参数,指定图像比例(<1)以构建每个图像的金字塔;`pyr_scale=0.5`表示经典金字塔,其中每一层都比前一层小两倍。levels
- 包括初始图像的金字塔层数;`levels=1`表示不创建额外的层,只使用原始图像。winsize
- 平均窗口大小;较大的值会增加算法对图像噪声的鲁棒性,并为快速运动检测提供更多机会,但会产生更模糊的运动场。iterations
- 算法在每个金字塔层进行的迭代次数。poly_n
- 用于在每个像素中查找多项式展开的像素邻域大小;较大的值意味着图像将用更平滑的曲面逼近,产生更鲁棒的算法和更模糊的运动场,通常`poly_n =5`或7。poly_sigma
- 用于平滑用作多项式展开基础的导数的高斯函数的标准差;对于`poly_n=5`,您可以设置`poly_sigma=1.1`,对于`poly_n=7`,一个好的值是`poly_sigma=1.5`。flags
- 可以是以下组合的操作标志- OPTFLOW_USE_INITIAL_FLOW 使用输入流作为初始流近似值。
- OPTFLOW_FARNEBACK_GAUSSIAN 使用高斯\(\texttt{winsize}\times\texttt{winsize}\)滤波器代替相同大小的盒式滤波器进行光流估计;通常,此选项比使用盒式滤波器提供更精确的光流,但速度较慢;通常,高斯窗口的`winsize`应设置为较大的值以达到相同的鲁棒性水平。
- Gunnar Farneback 描述的光流算法示例可在 opencv_source_code/samples/cpp/fback.cpp 中找到。
- (Python) Gunnar Farneback 描述的光流算法示例可在 opencv_source_code/samples/python/opt_flow.py 中找到。
-
computeECC
public static double computeECC(Mat templateImage, Mat inputImage, Mat inputMask)
计算两幅图像之间的增强相关系数 (ECC) 值,参考文献:EP08。- 参数
templateImage
- 单通道模板图像;CV_8U 或 CV_32F 数组。inputImage
- 单通道输入图像,将被扭曲以提供与templateImage
类似的图像,与templateImage
类型相同。inputMask
- 一个可选掩码,用于指示inputImage
的有效值。参见:findTransformECC- 返回值
- 自动生成
-
computeECC
public static double computeECC(Mat templateImage, Mat inputImage)
计算两幅图像之间的增强相关系数 (ECC) 值,参考文献:EP08。- 参数
templateImage
- 单通道模板图像;CV_8U 或 CV_32F 数组。inputImage
- 单通道输入图像,将被扭曲以提供与templateImage
类似的图像,与templateImage
类型相同。参见:findTransformECC- 返回值
- 自动生成
-
findTransformECC
public static double findTransformECC(Mat templateImage, Mat inputImage, Mat warpMatrix, int motionType, TermCriteria criteria, Mat inputMask, int gaussFiltSize)
根据 ECC 准则查找两幅图像之间的几何变换(扭曲),参考文献:EP08。- 参数
templateImage
- 单通道模板图像;CV_8U 或 CV_32F 数组。inputImage
- 单通道输入图像,应该使用最终的warpMatrix
进行扭曲,以提供与templateImage
类似的图像,与templateImage
类型相同。warpMatrix
- 浮点型 \(2\times 3\) 或 \(3\times 3\) 映射矩阵(变换矩阵)。motionType
- 参数,指定运动类型。-
MOTION_TRANSLATION 设置平移运动模型;
warpMatrix
为 \(2\times 3\) 矩阵,前 \(2\times 2\) 部分为单位矩阵,其余两个参数将被估计。 -
MOTION_EUCLIDEAN 设置欧几里得(刚性)变换作为运动模型;估计三个参数;
warpMatrix
为 \(2\times 3\) 矩阵。 -
MOTION_AFFINE 设置仿射运动模型(默认);估计六个参数;
warpMatrix
为 \(2\times 3\) 矩阵。 -
MOTION_HOMOGRAPHY 设置单应性作为运动模型;估计八个参数;
warpMatrix
为 \(3\times 3\) 矩阵。
-
MOTION_TRANSLATION 设置平移运动模型;
criteria
- 参数,指定 ECC 算法的终止准则;criteria.epsilon
定义两次迭代之间相关系数增量的阈值(负的criteria.epsilon
使criteria.maxcount
成为唯一的终止准则)。默认值如上所述。inputMask
- 一个可选掩码,用于指示inputImage
的有效值。gaussFiltSize
- 一个可选值,指示高斯模糊滤波器的尺寸;(默认值:5)该函数根据 ECC 准则(引用:EP08)估计最佳变换 (warpMatrix
),即 \(\texttt{warpMatrix} = \arg\max_{W} \texttt{ECC}(\texttt{templateImage}(x,y),\texttt{inputImage}(x',y'))\) ,其中 \(\begin{bmatrix} x' \\ y' \end{bmatrix} = W \cdot \begin{bmatrix} x \\ y \\ 1 \end{bmatrix}\)(对于单应性,该等式使用齐次坐标)。它返回最终增强的相关系数,即模板图像和最终扭曲的输入图像之间的相关系数。当使用 \(3\times 3\) 矩阵且motionType
= 0、1 或 2 时,第三行将被忽略。与findHomography
和estimateRigidTransform
不同,findTransformECC
函数实现基于区域的对齐,其基于强度相似性。本质上,该函数更新粗略对齐图像的初始变换。如果此信息缺失,则使用恒等变换(单位矩阵)作为初始化。请注意,如果图像发生强位移/旋转,则需要一个粗略对齐图像的初始变换(例如,一个简单的欧几里得/相似变换,允许图像显示大致相同的图像内容)。使用反向扭曲在第二张图像中获取接近第一张图像的图像,即使用标志WARP_INVERSE_MAP
与warpAffine
或warpPerspective
一起使用。另请参见 OpenCV 示例image_alignment.cpp
,该示例演示了该函数的用法。请注意,如果算法不收敛,则该函数将抛出异常。参见:computeECC、estimateAffine2D、estimateAffinePartial2D、findHomography- 返回值
- 自动生成
-
findTransformECC
public static double findTransformECC(Mat templateImage, Mat inputImage, Mat warpMatrix, int motionType, TermCriteria criteria, Mat inputMask)
-
findTransformECC
public static double findTransformECC(Mat templateImage, Mat inputImage, Mat warpMatrix, int motionType, TermCriteria criteria)
-
findTransformECC
public static double findTransformECC(Mat templateImage, Mat inputImage, Mat warpMatrix, int motionType)
-
findTransformECC
public static double findTransformECC(Mat templateImage, Mat inputImage, Mat warpMatrix)
-
readOpticalFlow
public static Mat readOpticalFlow(java.lang.String path)
读取 .flo 文件- 参数
path
- 要加载的文件路径。readOpticalFlow
函数从文件加载流场并将其作为单个矩阵返回。生成的 Mat 类型为 CV_32FC2 - 浮点型,2 通道。第一通道对应于水平方向上的流 (u),第二通道对应于垂直方向上的流 (v)。- 返回值
- 自动生成
-
writeOpticalFlow
public static boolean writeOpticalFlow(java.lang.String path, Mat flow)
将 .flo 文件写入磁盘- 参数
path
- 要写入的文件路径。flow
- 要存储的流场。该函数将流场存储在文件中,成功返回 true,否则返回 false。流场必须是 2 通道浮点型矩阵 (CV_32FC2)。第一通道对应于水平方向上的流 (u),第二通道对应于垂直方向上的流 (v)。- 返回值
- 自动生成
-
createBackgroundSubtractorMOG2
public static BackgroundSubtractorMOG2 createBackgroundSubtractorMOG2(int history, double varThreshold, boolean detectShadows)
创建 MOG2 背景减除器- 参数
history
- 历史长度。varThreshold
- 像素与模型之间的马氏距离平方阈值,用于判断像素是否被背景模型很好地描述。此参数不影响背景更新。detectShadows
- 如果为真,算法将检测阴影并标记它们。它会稍微降低速度,因此如果您不需要此功能,请将参数设置为 false。- 返回值
- 自动生成
-
createBackgroundSubtractorMOG2
public static BackgroundSubtractorMOG2 createBackgroundSubtractorMOG2(int history, double varThreshold)
创建 MOG2 背景减除器- 参数
history
- 历史长度。varThreshold
- 像素与模型之间的马氏距离平方阈值,用于判断像素是否被背景模型很好地描述。此参数不影响背景更新。速度,因此如果您不需要此功能,请将参数设置为 false。- 返回值
- 自动生成
-
createBackgroundSubtractorMOG2
public static BackgroundSubtractorMOG2 createBackgroundSubtractorMOG2(int history)
创建 MOG2 背景减除器- 参数
history
- 历史长度。用于判断像素是否被背景模型很好地描述。此参数不影响背景更新。速度,因此如果您不需要此功能,请将参数设置为 false。- 返回值
- 自动生成
-
createBackgroundSubtractorMOG2
public static BackgroundSubtractorMOG2 createBackgroundSubtractorMOG2()
创建 MOG2 背景减法器 用于判断像素是否被背景模型很好地描述。此参数不影响背景更新。速度,因此如果您不需要此功能,请将参数设置为 false。- 返回值
- 自动生成
-
createBackgroundSubtractorKNN
public static BackgroundSubtractorKNN createBackgroundSubtractorKNN(int history, double dist2Threshold, boolean detectShadows)
创建 KNN 背景减除器- 参数
history
- 历史长度。dist2Threshold
- 像素与样本之间距离平方的阈值,用于判断像素是否接近该样本。此参数不影响背景更新。detectShadows
- 如果为真,算法将检测阴影并标记它们。它会稍微降低速度,因此如果您不需要此功能,请将参数设置为 false。- 返回值
- 自动生成
-
createBackgroundSubtractorKNN
public static BackgroundSubtractorKNN createBackgroundSubtractorKNN(int history, double dist2Threshold)
创建 KNN 背景减除器- 参数
history
- 历史长度。dist2Threshold
- 像素与样本之间距离平方的阈值,用于判断像素是否接近该样本。此参数不影响背景更新。速度,因此如果您不需要此功能,请将参数设置为 false。- 返回值
- 自动生成
-
createBackgroundSubtractorKNN
public static BackgroundSubtractorKNN createBackgroundSubtractorKNN(int history)
创建 KNN 背景减除器- 参数
history
- 历史长度。是否接近该样本。此参数不影响背景更新。速度,因此如果您不需要此功能,请将参数设置为 false。- 返回值
- 自动生成
-
createBackgroundSubtractorKNN
public static BackgroundSubtractorKNN createBackgroundSubtractorKNN()
创建 KNN 背景减法器 是否接近该样本。此参数不影响背景更新。速度,因此如果您不需要此功能,请将参数设置为 false。- 返回值
- 自动生成
-
-