类 Video
- java.lang.Object
-
- org.opencv.video.Video
-
public class Video extends java.lang.Object
-
-
字段摘要
字段 修饰符和类型 字段 描述 static intMOTION_AFFINEstatic intMOTION_EUCLIDEANstatic intMOTION_HOMOGRAPHYstatic intMOTION_TRANSLATIONstatic intOPTFLOW_FARNEBACK_GAUSSIANstatic intOPTFLOW_LK_GET_MIN_EIGENVALSstatic intOPTFLOW_USE_INITIAL_FLOWstatic intTrackerSamplerCSC_MODE_DETECTstatic intTrackerSamplerCSC_MODE_INIT_NEGstatic intTrackerSamplerCSC_MODE_INIT_POSstatic intTrackerSamplerCSC_MODE_TRACK_NEGstatic intTrackerSamplerCSC_MODE_TRACK_POS
-
构造函数摘要
构造函数 构造函数 描述 Video()
-
方法摘要
所有方法 静态方法 具体方法 修饰符和类型 方法 描述 static intbuildOpticalFlowPyramid(Mat img, java.util.List<Mat> pyramid, Size winSize, int maxLevel)构建图像金字塔,可传递给 calcOpticalFlowPyrLK。static intbuildOpticalFlowPyramid(Mat img, java.util.List<Mat> pyramid, Size winSize, int maxLevel, boolean withDerivatives)构建图像金字塔,可传递给 calcOpticalFlowPyrLK。static intbuildOpticalFlowPyramid(Mat img, java.util.List<Mat> pyramid, Size winSize, int maxLevel, boolean withDerivatives, int pyrBorder)构建图像金字塔,可传递给 calcOpticalFlowPyrLK。static intbuildOpticalFlowPyramid(Mat img, java.util.List<Mat> pyramid, Size winSize, int maxLevel, boolean withDerivatives, int pyrBorder, int derivBorder)构建图像金字塔,可传递给 calcOpticalFlowPyrLK。static intbuildOpticalFlowPyramid(Mat img, java.util.List<Mat> pyramid, Size winSize, int maxLevel, boolean withDerivatives, int pyrBorder, int derivBorder, boolean tryReuseInputImage)构建图像金字塔,可传递给 calcOpticalFlowPyrLK。static voidcalcOpticalFlowFarneback(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 voidcalcOpticalFlowPyrLK(Mat prevImg, Mat nextImg, MatOfPoint2f prevPts, MatOfPoint2f nextPts, MatOfByte status, MatOfFloat err)使用带金字塔的迭代 Lucas-Kanade 方法计算稀疏特征集的光流。static voidcalcOpticalFlowPyrLK(Mat prevImg, Mat nextImg, MatOfPoint2f prevPts, MatOfPoint2f nextPts, MatOfByte status, MatOfFloat err, Size winSize)使用带金字塔的迭代 Lucas-Kanade 方法计算稀疏特征集的光流。static voidcalcOpticalFlowPyrLK(Mat prevImg, Mat nextImg, MatOfPoint2f prevPts, MatOfPoint2f nextPts, MatOfByte status, MatOfFloat err, Size winSize, int maxLevel)使用带金字塔的迭代 Lucas-Kanade 方法计算稀疏特征集的光流。static voidcalcOpticalFlowPyrLK(Mat prevImg, Mat nextImg, MatOfPoint2f prevPts, MatOfPoint2f nextPts, MatOfByte status, MatOfFloat err, Size winSize, int maxLevel, TermCriteria criteria)使用带金字塔的迭代 Lucas-Kanade 方法计算稀疏特征集的光流。static voidcalcOpticalFlowPyrLK(Mat prevImg, Mat nextImg, MatOfPoint2f prevPts, MatOfPoint2f nextPts, MatOfByte status, MatOfFloat err, Size winSize, int maxLevel, TermCriteria criteria, int flags)使用带金字塔的迭代 Lucas-Kanade 方法计算稀疏特征集的光流。static voidcalcOpticalFlowPyrLK(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 RotatedRectCamShift(Mat probImage, Rect window, TermCriteria criteria)Finds an object center, size, and orientation.静态双精度浮点型computeECC(Mat templateImage, Mat inputImage)计算两幅图像之间的增强相关系数(ECC)值 CITE: EP08。静态双精度浮点型computeECC(Mat templateImage, Mat inputImage, Mat inputMask)计算两幅图像之间的增强相关系数(ECC)值 CITE: EP08。static BackgroundSubtractorKNNcreateBackgroundSubtractorKNN()创建 KNN 背景减除器,用于判断像素是否接近该样本。static BackgroundSubtractorKNNcreateBackgroundSubtractorKNN(int history)创建 KNN 背景减法器static BackgroundSubtractorKNNcreateBackgroundSubtractorKNN(int history, double dist2Threshold)创建 KNN 背景减法器static BackgroundSubtractorKNNcreateBackgroundSubtractorKNN(int history, double dist2Threshold, boolean detectShadows)创建 KNN 背景减法器static BackgroundSubtractorMOG2createBackgroundSubtractorMOG2()创建 MOG2 背景减除器,用于判断像素是否能被背景模型很好地描述。static BackgroundSubtractorMOG2createBackgroundSubtractorMOG2(int history)创建 MOG2 背景减法器static BackgroundSubtractorMOG2createBackgroundSubtractorMOG2(int history, double varThreshold)创建 MOG2 背景减法器static BackgroundSubtractorMOG2createBackgroundSubtractorMOG2(int history, double varThreshold, boolean detectShadows)创建 MOG2 背景减法器静态双精度浮点型findTransformECC(Mat templateImage, Mat inputImage, Mat warpMatrix)静态双精度浮点型findTransformECC(Mat templateImage, Mat inputImage, Mat warpMatrix, int motionType)静态双精度浮点型findTransformECC(Mat templateImage, Mat inputImage, Mat warpMatrix, int motionType, TermCriteria criteria)静态双精度浮点型findTransformECC(Mat templateImage, Mat inputImage, Mat warpMatrix, int motionType, TermCriteria criteria, Mat inputMask)静态双精度浮点型findTransformECC(Mat templateImage, Mat inputImage, Mat warpMatrix, int motionType, TermCriteria criteria, Mat inputMask, int gaussFiltSize)根据 ECC 准则 CITE: EP08 查找两幅图像之间的几何变换(扭曲)。static intmeanShift(Mat probImage, Rect window, TermCriteria criteria)在反向投影图像上查找对象。static MatreadOpticalFlow(java.lang.String path)读取 .flo 文件static booleanwriteOpticalFlow(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
- 参见
- 常量字段值
-
-
方法详细信息
-
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 距离除以窗口中的像素数作为误差度量。
- 一个使用 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 距离除以窗口中的像素数作为误差度量。
- 一个使用 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 距离除以窗口中的像素数作为误差度量。
- 一个使用 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 距离除以窗口中的像素数作为误差度量。
- 一个使用 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 距离除以窗口中的像素数作为误差度量。
- 一个使用 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 应设置为更大的值,以达到相同的鲁棒性水平。
- 一个使用 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)。- 返回
- 自动生成
-
-