类 Video


  • public class Video
    extends java.lang.Object
    • 字段详细信息

      • 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
        参见
        常量字段值
    • 构造函数详细信息

      • Video

        public Video()
    • 方法详细信息

      • createBackgroundSubtractorMOG2

        public static BackgroundSubtractorMOG2 createBackgroundSubtractorMOG2​(int history,
                                                                              double varThreshold,
                                                                              boolean detectShadows)
        创建 MOG2 背景减法器
        参数
        history - 历史长度。
        varThreshold - 像素与模型之间平方马氏距离的阈值,用于判断像素是否能被背景模型很好地描述。此参数不影响背景更新。
        detectShadows - 如果为 true,算法将检测并标记阴影。这会稍微降低速度,因此如果您不需要此功能,请将此参数设置为 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 - 如果为 true,算法将检测并标记阴影。这会稍微降低速度,因此如果您不需要此功能,请将此参数设置为 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。
        返回
        自动生成
      • CamShift

        public static RotatedRect CamShift​(Mat probImage,
                                           Rect window,
                                           TermCriteria criteria)
        Finds an object center, size, and orientation.
        参数
        probImage - 对象直方图的反向投影。参见 calcBackProject。
        window - 初始搜索窗口。
        criteria - 基础 meanShift 的停止准则。返回(在旧接口中)CAMSHIFT 收敛所需的迭代次数。该函数实现了 CAMSHIFT 对象跟踪算法 CITE: Bradski98。首先,它使用 meanShift 找到对象中心,然后调整窗口大小并找到最佳旋转。该函数返回包含对象位置、大小和方向的旋转矩形结构。可以通过 RotatedRect::boundingRect() 获取搜索窗口的下一个位置。请参见跟踪彩色对象的 OpenCV 示例 camshiftdemo.c。注意:
        • (Python)一个解释 camshift 跟踪算法的示例可在 opencv_source_code/samples/python/camshift.py 找到
        返回
        自动生成
      • 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 - 需要查找光流的 2D 点向量;点坐标必须是单精度浮点数。
        nextPts - 包含输入特征在第二张图像中计算出的新位置的 2D 点输出向量(带单精度浮点坐标);当传递 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 - 需要查找光流的 2D 点向量;点坐标必须是单精度浮点数。
        nextPts - 包含输入特征在第二张图像中计算出的新位置的 2D 点输出向量(带单精度浮点坐标);当传递 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 距离除以窗口中的像素数作为误差度量。
        光流方程(该矩阵在 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)
        使用带金字塔的迭代 Lucas-Kanade 方法计算稀疏特征集的光流。
        参数
        prevImg - 第一张 8 位输入图像或由 buildOpticalFlowPyramid 构建的金字塔。
        nextImg - 第二张输入图像或与 prevImg 具有相同大小和相同类型的金字塔。
        prevPts - 需要查找光流的 2D 点向量;点坐标必须是单精度浮点数。
        nextPts - 包含输入特征在第二张图像中计算出的新位置的 2D 点输出向量(带单精度浮点坐标);当传递 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 距离除以窗口中的像素数作为误差度量。
        光流方程(该矩阵在 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)
        使用带金字塔的迭代 Lucas-Kanade 方法计算稀疏特征集的光流。
        参数
        prevImg - 第一张 8 位输入图像或由 buildOpticalFlowPyramid 构建的金字塔。
        nextImg - 第二张输入图像或与 prevImg 具有相同大小和相同类型的金字塔。
        prevPts - 需要查找光流的 2D 点向量;点坐标必须是单精度浮点数。
        nextPts - 包含输入特征在第二张图像中计算出的新位置的 2D 点输出向量(带单精度浮点坐标);当传递 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 距离除以窗口中的像素数作为误差度量。
        光流方程(该矩阵在 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)
        使用带金字塔的迭代 Lucas-Kanade 方法计算稀疏特征集的光流。
        参数
        prevImg - 第一张 8 位输入图像或由 buildOpticalFlowPyramid 构建的金字塔。
        nextImg - 第二张输入图像或与 prevImg 具有相同大小和相同类型的金字塔。
        prevPts - 需要查找光流的 2D 点向量;点坐标必须是单精度浮点数。
        nextPts - 包含输入特征在第二张图像中计算出的新位置的 2D 点输出向量(带单精度浮点坐标);当传递 OPTFLOW_USE_INITIAL_FLOW 标志时,该向量必须与输入具有相同大小。
        status - 输出状态向量(无符号字符);如果找到对应特征的光流,则向量的每个元素设置为 1,否则设置为 0。
        err - 误差输出向量;向量的每个元素设置为对应特征的误差,误差度量类型可在 flags 参数中设置;如果未找到光流,则误差未定义(使用 status 参数查找此类情况)。
        winSize - 每个金字塔级别的搜索窗口大小。如果设置为 1,则使用两级别,以此类推;如果金字塔作为输入传递,则算法将使用与金字塔层数相同但不超过 maxLevel 的级别数。(在达到指定的 criteria.maxCount 最大迭代次数后,或当搜索窗口移动距离小于 criteria.epsilon 时。
        • OPTFLOW_USE_INITIAL_FLOW 使用存储在 nextPts 中的初始估计;如果未设置此标志,则 prevPts 将复制到 nextPts 并被视为初始估计。
        • OPTFLOW_LK_GET_MIN_EIGENVALS 使用最小特征值作为误差度量(参见 minEigThreshold 描述);如果未设置此标志,则使用原始点和移动点周围的块之间的 L1 距离除以窗口中的像素数作为误差度量。
        光流方程(该矩阵在 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)
        使用带金字塔的迭代 Lucas-Kanade 方法计算稀疏特征集的光流。
        参数
        prevImg - 第一张 8 位输入图像或由 buildOpticalFlowPyramid 构建的金字塔。
        nextImg - 第二张输入图像或与 prevImg 具有相同大小和相同类型的金字塔。
        prevPts - 需要查找光流的 2D 点向量;点坐标必须是单精度浮点数。
        nextPts - 包含输入特征在第二张图像中计算出的新位置的 2D 点输出向量(带单精度浮点坐标);当传递 OPTFLOW_USE_INITIAL_FLOW 标志时,该向量必须与输入具有相同大小。
        status - 输出状态向量(无符号字符);如果找到对应特征的光流,则向量的每个元素设置为 1,否则设置为 0。
        err - 误差输出向量;向量的每个元素设置为对应特征的误差,误差度量类型可在 flags 参数中设置;如果未找到光流,则误差未定义(使用 status 参数查找此类情况)。如果设置为 1,则使用两级别,以此类推;如果金字塔作为输入传递,则算法将使用与金字塔层数相同但不超过 maxLevel 的级别数。(在达到指定的 criteria.maxCount 最大迭代次数后,或当搜索窗口移动距离小于 criteria.epsilon 时。
        • OPTFLOW_USE_INITIAL_FLOW 使用存储在 nextPts 中的初始估计;如果未设置此标志,则 prevPts 将复制到 nextPts 并被视为初始估计。
        • OPTFLOW_LK_GET_MIN_EIGENVALS 使用最小特征值作为误差度量(参见 minEigThreshold 描述);如果未设置此标志,则使用原始点和移动点周围的块之间的 L1 距离除以窗口中的像素数作为误差度量。
        光流方程(该矩阵在 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 找到
      • 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 - 用于平滑作为多项式展开基础的导数的 Gaussian 标准差;对于 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 应设置为更大的值,以达到相同的鲁棒性水平。
        该函数使用 CITE: Farneback2003 算法为每个 prev 像素找到光流,使得 \(\texttt{prev} (y,x) \sim \texttt{next} ( y + \texttt{flow} (y,x)[1], x + \texttt{flow} (y,x)[0])\) 注意:一些示例
        • 一个使用 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)值 CITE: EP08。
        参数
        templateImage - 单通道模板图像;CV_8U 或 CV_32F 数组。
        inputImage - 单通道输入图像,将被扭曲以提供类似于 templateImage 的图像,类型与 templateImage 相同。
        inputMask - 一个可选掩码,用于指示 inputImage 的有效值。参见:findTransformECC
        返回
        自动生成
      • computeECC

        public static double computeECC​(Mat templateImage,
                                        Mat inputImage)
        计算两幅图像之间的增强相关系数(ECC)值 CITE: 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 准则 CITE: 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\) 矩阵。
        criteria - 参数,指定 ECC 算法的终止准则;criteria.epsilon 定义两次迭代之间相关系数增量的阈值(负的 criteria.epsilon 使 criteria.maxcount 成为唯一的终止准则)。默认值如上述声明所示。
        inputMask - 一个可选掩码,用于指示 inputImage 的有效值。
        gaussFiltSize - 一个可选值,指示高斯模糊滤波器的大小;(默认值:5)该函数根据 ECC 准则 (CITE: 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)。
        返回
        自动生成