OpenCV 4.13.0
开源计算机视觉库 (Open Source Computer Vision)
正在加载...
正在搜索...
未找到匹配项
FastCV 硬件加速功能的模块封装器

详细说明

类  cv::fastcv::FCVMSER
 用于灰度图像的 MSER 斑点检测器。 更多...
 
类  cv::fastcv::QcAllocator
 Qualcomm 自定义分配器。该分配器使用 Qualcomm 的内存管理函数。 更多...
 
类  cv::fastcv::QcResourceManager
 FastCV 分配的资源管理器。此类管理活动分配。 更多...
 

函数

void cv::fastcv::arithmetic_op (InputArray src1, InputArray src2, OutputArray dst, int op)
 两个矩阵的算术加法和减法运算。针对 Qualcomm 处理器进行了优化。
 
void cv::fastcv::bilateralFilter (InputArray _src, OutputArray _dst, int d, float sigmaColor, float sigmaSpace, int borderType=BORDER_DEFAULT)
 对图像应用双边滤波,考虑每个像素邻域的 d 像素直径。此过滤器不支持就地(inplace)操作。
 
void cv::fastcv::bilateralRecursive (cv::InputArray src, cv::OutputArray dst, float sigmaColor=0.03f, float sigmaSpace=0.1f)
 递归双边滤波。
 
void cv::fastcv::buildPyramid (InputArray src, OutputArrayOfArrays pyr, int nLevels, bool scaleBy2=true, int borderType=cv::BORDER_REFLECT, uint8_t borderValue=0)
 从单个原始图像构建 float32 图像金字塔 - 图像根据预设层级相继缩小。此 API 同时支持 ORB 缩放和二分之一缩小。
 
void cv::fastcv::calcHist (InputArray _src, OutputArray _hist)
 计算输入图像的直方图。该函数以优化方式实现了 8u 单通道图像 256 级直方图计算的特定用例。
 
void cv::fastcv::dsp::Canny (InputArray _src, OutputArray _dst, int lowThreshold, int highThreshold, int apertureSize=3, bool L2gradient=false)
 应用于 8 位灰度图像的 Canny 边缘检测器。
 
void cv::fastcv::clusterEuclidean (InputArray points, InputArray clusterCenters, OutputArray newClusterCenters, OutputArray clusterSizes, OutputArray clusterBindings, OutputArray clusterSumDists, int numPointsUsed=-1)
 在 D 维空间中将 N 个输入点聚类为 K 个聚类。接受 8 位无符号整数点。在 Qualcomm 处理器上提供比 cv::kmeans 更快的执行速度。
 
void cv::fastcv::DCT (InputArray src, OutputArray dst)
 该函数对输入图像执行 8x8 正向离散余弦变换。接受 8 位无符号整数类型的输入,并生成 16 位有符号整数类型的输出。在 Qualcomm 处理器上提供比 cv::dct 更快的执行速度。
 
void cv::fastcv::FAST10 (InputArray src, InputArray mask, OutputArray coords, OutputArray scores, int barrier, int border, bool nmsEnabled)
 根据掩码从图像中提取 FAST10 角点和分数。掩码指定了检测器应忽略的像素。专为 Qualcomm 处理器上的角点检测设计,提供更高的速度。
 
void cv::fastcv::dsp::fcvdspdeinit ()
 反初始化 FastCV DSP 环境。
 
int cv::fastcv::dsp::fcvdspinit ()
 初始化 FastCV DSP 环境。
 
void cv::fastcv::dsp::FFT (InputArray src, OutputArray dst)
 计算实值矩阵的一维或二维快速傅里叶变换。对于二维情况,输入和输出矩阵的宽度和高度必须是 2 的幂。对于一维情况,矩阵的高度必须为 1,而宽度必须是 2 的幂。
 
void cv::fastcv::FFT (InputArray src, OutputArray dst)
 计算实值矩阵的一维或二维快速傅里叶变换。对于二维情况,输入和输出矩阵的宽度和高度必须是 2 的幂。对于一维情况,矩阵的高度必须为 1,而宽度必须是 2 的幂。接受 8 位无符号整数数组,而 cv::dft 接受浮点或复数数组。
 
void cv::fastcv::fillConvexPoly (InputOutputArray img, InputArray pts, Scalar color)
 绘制凸多边形。该函数用指定颜色填充凸多边形的内部。要求宽度和步长(stride)必须是 8 的倍数。
 
void cv::fastcv::dsp::filter2D (InputArray _src, OutputArray _dst, int ddepth, InputArray _kernel)
 使用非可分算子过滤图像。
 
void cv::fastcv::filter2D (InputArray _src, OutputArray _dst, int ddepth, InputArray _kernel)
 使用非可分算子进行 NxN 相关运算。最大到算子宽度一半的边界将被忽略。
 
void cv::fastcv::gaussianBlur (InputArray _src, OutputArray _dst, int kernel_size=3, bool blur_border=true)
 sigma = 0 且具有正方形算子尺寸的高斯模糊。处理边界的方式与 cv::GaussianBlur 不同,会导致输出略有差异。
 
void cv::fastcv::gemm (InputArray src1, InputArray src2, OutputArray dst, float alpha=1.0, InputArray src3=noArray(), float beta=0.0)
 两个浮点矩阵的矩阵乘法 R = a*A*B + b*C,其中 A、B、C、R 是矩阵,a、b 是常数。针对 Qualcomm 处理器进行了优化。
 
cv::MatAllocatorcv::fastcv::getQcAllocator ()
 获取默认的 Qualcomm 分配器。该函数返回一个指向默认 Qualcomm 分配器的指针,该分配器针对 DSP 使用进行了优化。
 
void cv::fastcv::houghLines (InputArray src, OutputArray lines, double threshold=0.25)
 执行霍夫直线检测。
 
void cv::fastcv::IDCT (InputArray src, OutputArray dst)
 该函数对输入图像执行 8x8 逆离散余弦变换。在 Qualcomm 处理器上,逆变换情况下的执行速度比 cv::dct 更快。
 
void cv::fastcv::dsp::IFFT (InputArray src, OutputArray dst)
 计算复值矩阵的一维或二维逆快速傅里叶变换。对于二维情况,输入和输出矩阵的宽度和高度必须是 2 的幂。对于一维情况,矩阵的高度必须为 1,而宽度必须是 2 的幂。
 
void cv::fastcv::IFFT (InputArray src, OutputArray dst)
 计算复值矩阵的一维或二维逆快速傅里叶变换。对于二维情况,输入和输出矩阵的宽度和高度必须是 2 的幂。对于一维情况,矩阵的高度必须为 1,而宽度必须是 2 的幂。
 
void cv::fastcv::integrateYUV (InputArray Y, InputArray CbCr, OutputArray IY, OutputArray ICb, OutputArray ICr)
 YCbCr420 图像的积分图。注意:输入高度应为 2 的倍数。输入宽度和步长应为 16 的倍数。输出步长应为 8 的倍数。针对 Qualcomm 处理器进行了优化。
 
void cv::fastcv::matmuls8s32 (InputArray src1, InputArray src2, OutputArray dst)
 两个 int8_t 类型矩阵的矩阵乘法。使用有符号整数输入/输出,而 cv::gemm 使用浮点输入/输出。matmuls8s32 在 Qualcomm 处理器上提供更高的速度。
 
int cv::fastcv::meanShift (InputArray src, Rect &rect, TermCriteria termCrit)
 应用均值漂移(meanshift)程序并获取最终收敛位置。该函数将均值漂移程序应用于原始图像(通常是概率图)并获取最终收敛位置。当达到所需精度或最大迭代次数时,收敛位置搜索将停止。算法中使用的矩(Moments)是以浮点数计算的。该函数与 cv::meanShift 并非位精确一致,但在 Snapdragon 处理器上提供了更好的延迟表现。
 
void cv::fastcv::merge (InputArrayOfArrays mv, OutputArray dst)
 从多个单通道 CV_8U 矩阵创建一个多通道矩阵。针对 Qualcomm 处理器进行了优化。
 
cv::Moments cv::fastcv::moments (InputArray _src, bool binary)
 计算图像像素强度的所有三阶及以下矩。结果返回在 cv::Moments 结构中。此函数 cv::fastcv::moments() 使用浮点计算矩,而 cv::moments() 使用双精度浮点计算矩。
 
void cv::fastcv::normalizeLocalBox (InputArray _src, OutputArray _dst, Size pSize, bool useStdDev)
 计算图像的局部减法和对比度归一化。图像的每个像素都通过以该像素为中心的色块的均值和标准差进行归一化。针对 Qualcomm 处理器进行了优化。
 
void cv::fastcv::remap (InputArray src, OutputArray dst, InputArray map1, InputArray map2, int interpolation, int borderValue=0)
 对灰度 CV_8UC1 图像应用通用的几何变换。
 
void cv::fastcv::remapRGBA (InputArray src, OutputArray dst, InputArray map1, InputArray map2, int interpolation)
 使用双线性或最近邻插值对 4 通道 CV_8UC4 图像应用通用几何变换。
 
void cv::fastcv::resizeDown (cv::InputArray _src, cv::OutputArray _dst, Size dsize, double inv_scale_x, double inv_scale_y)
 使用指定的缩放因子或尺寸缩小图像。此函数支持单通道 (CV_8UC1) 和双通道 (CV_8UC2) 图像。
 
void cv::fastcv::sepFilter2D (InputArray _src, OutputArray _dst, int ddepth, InputArray _kernelX, InputArray _kernelY)
 使用可分算子进行 NxN 相关运算。如果 srcImg 和 dstImg 指向同一地址且 srcStride 等于 dstStride,则会进行就地操作。最大到算子宽度一半的边界将被忽略。处理溢出的方式与 OpenCV 不同,该函数将对中间结果和最终结果进行右移。
 
void cv::fastcv::sobel (InputArray _src, OutputArray _dx, OutputArray _dy, int kernel_size, int borderType, int borderValue)
 从源亮度数据创建不带归一化的 2D 梯度图像。计算 X 方向 1 阶导数或 Y 方向 1 阶导数,或同时计算两者。
 
void cv::fastcv::sobel3x3u8 (InputArray _src, OutputArray _dst, OutputArray _dsty=noArray(), int ddepth=CV_8U, bool normalization=false)
 从源亮度数据创建不带归一化的 2D 梯度图像。该函数在 3x3 邻域上计算中心差分,然后将结果与 Sobel 算子卷积,最大到算子宽度一半的边界将被忽略。
 
void cv::fastcv::sobelPyramid (InputArrayOfArrays pyr, OutputArrayOfArrays dx, OutputArrayOfArrays dy, int outType=CV_8S)
 从图像金字塔创建梯度金字塔。注意:在梯度计算期间会忽略边界。
 
void cv::fastcv::split (InputArray src, OutputArrayOfArrays mv)
 将 CV_8U 多通道矩阵拆分为多个 CV_8UC1 矩阵。针对 Qualcomm 处理器进行了优化。
 
void cv::fastcv::dsp::sumOfAbsoluteDiffs (cv::InputArray _patch, cv::InputArray _src, cv::OutputArray _dst)
 图像与 8x8 模板的绝对差之和(SAD)。
 
void cv::fastcv::dsp::thresholdOtsu (InputArray _src, OutputArray _dst, bool type)
 使用大津法(Otsu's method)对灰度图像进行二值化。如果像素值大于阈值,则将其设置为 max(255);否则设置为 min(0)。搜索使类内方差最小化的阈值。
 
void cv::fastcv::thresholdRange (InputArray src, OutputArray dst, int lowThresh, int highThresh, int trueValue, int falseValue)
 根据一对阈值对灰度图像进行二值化。二值化后的图像将处于用户选择的两个值中。该函数在 Snapdragon 处理器上提供了更好的延迟表现。
 
void cv::fastcv::trackOpticalFlowLK (InputArray src, InputArray dst, InputArrayOfArrays srcPyr, InputArrayOfArrays dstPyr, InputArray ptsIn, OutputArray ptsOut, InputArray ptsEst, OutputArray statusVec, cv::Size winSize=cv::Size(7, 7), cv::TermCriteria termCriteria=cv::TermCriteria(cv::TermCriteria::MAX_ITER|cv::TermCriteria::EPS, 7, 0.03f *0.03f))
 使用 Lucas-Kanade 算法计算稀疏光流。接受 8 位无符号整数图像。在 Qualcomm 处理器上提供更快的执行速度。
 
void cv::fastcv::trackOpticalFlowLK (InputArray src, InputArray dst, InputArrayOfArrays srcPyr, InputArrayOfArrays dstPyr, InputArrayOfArrays srcDxPyr, InputArrayOfArrays srcDyPyr, InputArray ptsIn, OutputArray ptsOut, OutputArray statusVec, cv::Size winSize=cv::Size(7, 7), int maxIterations=7)
 LK 跟踪函数 v1 版本的重载。
 
void cv::fastcv::warpAffine (InputArray _src, OutputArray _dst, InputArray _M, Size dsize, int interpolation=INTER_LINEAR, int borderValue=0)
 使用提供的变换矩阵对输入图像执行仿射变换。
 
void cv::fastcv::warpPerspective (InputArray _src, OutputArray _dst, InputArray _M0, Size dsize, int interpolation, int borderType, const Scalar &borderValue)
 使用透视变换对图像进行变换,与 cv::warpPerspective 相同,但并非位精确一致。
 
void cv::fastcv::warpPerspective2Plane (InputArray _src1, InputArray _src2, OutputArray _dst1, OutputArray _dst2, InputArray _M0, Size dsize)
 使用相同的变换对两个图像进行透视变换。适用时使用双线性插值。例如,同时对一个灰度图像和一个 alpha 图像进行变换,或对两个颜色通道进行变换。
 

函数文档 (Function Documentation)

◆ arithmetic_op()

void cv::fastcv::arithmetic_op ( InputArray src1,
InputArray src2,
OutputArray dst,
int op )

#include <opencv2/fastcv/arithm.hpp>

两个矩阵的算术加法和减法运算。针对 Qualcomm 处理器进行了优化。

参数
src1第一源矩阵,可以是 CV_8U、CV_16S、CV_32F 类型。注意:减法运算不支持 CV_32F
src2与 src1 类型和尺寸相同的第二源矩阵
dst与源矩阵类型相同的结果矩阵
op操作类型 - 0 表示加法,1 表示减法

◆ bilateralFilter()

void cv::fastcv::bilateralFilter ( InputArray _src,
OutputArray _dst,
int d,
float sigmaColor,
float sigmaSpace,
int borderType = BORDER_DEFAULT )

#include <opencv2/fastcv/bilateralFilter.hpp>

对图像应用双边滤波,考虑每个像素邻域的 d 像素直径。此过滤器不支持就地(inplace)操作。

参数
_src类型为 CV_8UC1 的输入图像
_dst与 _src 类型相同的目标图像
d算子尺寸(可以是 5、7 或 9)
sigmaColor颜色空间中的滤波器 sigma。典型值为 50.0f。增大该值意味着增加颜色差异较大的相邻像素对平滑结果的影响。
sigmaSpace坐标空间中的滤波器 sigma。典型值为 1.0f。增大该值意味着增加算子尺寸距离内较远相邻像素对平滑结果的影响。
borderType用于外推图像外部像素的边界模式

◆ bilateralRecursive()

void cv::fastcv::bilateralRecursive ( cv::InputArray src,
cv::OutputArray dst,
float sigmaColor = 0.03f,
float sigmaSpace = 0.1f )

#include <opencv2/fastcv/smooth.hpp>

递归双边滤波。

与传统的双边滤波不同,这里的平滑实际上是在梯度域执行的。该算法声称在图像质量和计算效率方面都比原始双边滤波更高效。参见杨庆雄(Yang Qingxiong)教授在 ECCV2012 发表的论文《Recursive Bilateral Filtering》中的算法描述。该函数与 cv::bilateralFilter 并非位精确一致,但在 Snapdragon 处理器上提供了更好的延迟表现。

参数
src输入图像,应具有一个 CV_8U 通道
dst具有一个 CV_8U 通道的输出数组
sigmaColor颜色空间中的 Sigma,值越大,算法平滑的颜色差异越多
sigmaSpace坐标空间中的 Sigma,值越大,平滑的像素距离越远

◆ buildPyramid()

void cv::fastcv::buildPyramid ( InputArray src,
OutputArrayOfArrays pyr,
int nLevels,
bool scaleBy2 = true,
int borderType = cv::BORDER_REFLECT,
uint8_t borderValue = 0 )

#include <opencv2/fastcv/pyramid.hpp>

从单个原始图像构建 float32 图像金字塔 - 图像根据预设层级相继缩小。此 API 同时支持 ORB 缩放和二分之一缩小。

参数
src8U 或 32F 类型的输入单通道图像
pyr包含 nLevels 个缩小图像副本的输出数组
nLevels要生成的金字塔层数
scaleBy2用于将图像缩小 2 倍或按 1/(2)^(1/4) 因子缩小(近似为 0.8408964,即 ORB 缩小),浮点图像不支持 ORB 缩放
borderType如何处理边界,选项包括 BORDER_REFLECT(映射到 FASTCV_BORDER_REFLECT)、BORDER_REFLECT_101(映射到 FASTCV_BORDER_REFLECT_V2)和 BORDER_REPLICATE(映射到 FASTCV_BORDER_REPLICATE)。其他边界类型映射到 FASTCV_BORDER_UNDEFINED(忽略边界像素)。目前,边界仅支持二分之一缩小,ORB 缩放会忽略边界。浮点图像也会忽略边界
borderValue填充边界应使用的值,浮点图像会忽略此项

◆ calcHist()

void cv::fastcv::calcHist ( InputArray _src,
OutputArray _hist )

#include <opencv2/fastcv/histogram.hpp>

计算输入图像的直方图。该函数以优化方式实现了 8u 单通道图像 256 级直方图计算的特定用例。

参数
_src类型为 CV_8UC1 的输入图像
_hist类型为 int 的 256 级输出直方图

◆ Canny()

void cv::fastcv::dsp::Canny ( InputArray _src,
OutputArray _dst,
int lowThreshold,
int highThreshold,
int apertureSize = 3,
bool L2gradient = false )

#include <opencv2/fastcv/edges_dsp.hpp>

应用于 8 位灰度图像的 Canny 边缘检测器。

参数
_src类型为 CV_8UC1 的输入图像
_dst包含边缘检测结果的输出 8 位图像
lowThreshold第一阈值
highThreshold第二阈值
apertureSize用于计算梯度的 Sobel 算子尺寸。支持的尺寸有 3、5 和 7。
L2gradientL2 梯度或 L1 梯度

◆ clusterEuclidean()

void cv::fastcv::clusterEuclidean ( InputArray points,
InputArray clusterCenters,
OutputArray newClusterCenters,
OutputArray clusterSizes,
OutputArray clusterBindings,
OutputArray clusterSumDists,
int numPointsUsed = -1 )

#include <opencv2/fastcv/cluster.hpp>

在 D 维空间中将 N 个输入点聚类为 K 个聚类。接受 8 位无符号整数点。在 Qualcomm 处理器上提供比 cv::kmeans 更快的执行速度。

参数
points类型为 8u 的点数组,每一行代表一个点。尺寸为 N 行 D 列,可以是不连续的。
clusterCenters类型为 32f 的初始聚类中心数组,每一行代表一个中心。尺寸为 K 行 D 列,可以是不连续的。
newClusterCenters类型为 32f 的结果聚类中心数组,每一行代表找到的中心。尺寸设为 K 行 D 列。
clusterSizes类型为 uint32 的结果聚类成员计数数组,尺寸设为 1 行 K 列。
clusterBindings类型为 uint32 的结果点索引数组,每个索引说明相应点属于哪个聚类。尺寸设为 1 行 numPointsUsed 列。
clusterSumDists类型为 32f 的结果距离之和数组,每个数字是每个聚类中心与其所属点之间距离的总和。尺寸设为 1 行 K 列
numPointsUsed要进行聚类的点数,范围从 0 到 numPointsUsed-1(含)。如果为负,则设为 N。

◆ DCT()

void cv::fastcv::DCT ( InputArray src,
OutputArray dst )

#include <opencv2/fastcv/ipptransform.hpp>

该函数对输入图像执行 8x8 正向离散余弦变换。接受 8 位无符号整数类型的输入,并生成 16 位有符号整数类型的输出。在 Qualcomm 处理器上提供比 cv::dct 更快的执行速度。

参数
src类型为 CV_8UC1 的输入图像
dst类型为 CV_16SC1 的输出图像

◆ FAST10()

void cv::fastcv::FAST10 ( InputArray src,
InputArray mask,
OutputArray coords,
OutputArray scores,
int barrier,
int border,
bool nmsEnabled )

#include <opencv2/fastcv/fast10.hpp>

根据掩码从图像中提取 FAST10 角点和分数。掩码指定了检测器应忽略的像素。专为 Qualcomm 处理器上的角点检测设计,提供更高的速度。

参数
src8 位灰度图像
mask可选掩码,指示哪些像素应从角点检测中忽略。其尺寸应为图像宽度和高度的 k 倍,其中 k = 1/2, 1/4 , 1/8 , 1, 2, 4 和 8。更多详情请参阅 FastCV 中 fcvCornerFast9InMaskScoreu8 函数的文档
coords类型为 CV_32S 的输出数组,包含检测到的角点的交错 x, y 位置
scores可选输出数组,包含检测到的角点的分数。分数是仍能验证检测到的角点的最高阈值。分数越高表示角点特征越强。例如,分数为 108 的角点强于分数为 50 的角点
barrierFAST 阈值。阈值用于比较中心像素的亮度值与围绕该像素的圆上的像素之间的差异
border图像上、下、右、左忽略的像素数。如果低于 4,则默认设为 4
nmsEnabled启用非极大值抑制(NMS)以剔除弱关键点

◆ fcvdspdeinit()

void cv::fastcv::dsp::fcvdspdeinit ( )

#include <opencv2/fastcv/dsp_init.hpp>

反初始化 FastCV DSP 环境。

该函数释放由 'fcvdspinit' 函数设置的资源和环境。应在用例或程序退出前调用它,以确保所有 DSP 资源都被正确清理且不发生内存泄漏。

注意
该函数必须在用例或程序结束时、所有 DSP 相关操作完成后调用。

◆ fcvdspinit()

int cv::fastcv::dsp::fcvdspinit ( )

#include <opencv2/fastcv/dsp_init.hpp>

初始化 FastCV DSP 环境。

该函数设置 DSP 运行所需的环境和资源。必须在用例或程序的最开始调用一次,以确保在执行任何 DSP 相关操作之前,DSP 已正确初始化。

注意
该函数必须在用例或程序开始时、任何 DSP 相关操作之前调用。
返回
int 成功返回 0,失败返回非零值。

◆ FFT() [1/2]

void cv::fastcv::dsp::FFT ( InputArray src,
OutputArray dst )

#include <opencv2/fastcv/fft_dsp.hpp>

计算实值矩阵的一维或二维快速傅里叶变换。对于二维情况,输入和输出矩阵的宽度和高度必须是 2 的幂。对于一维情况,矩阵的高度必须为 1,而宽度必须是 2 的幂。

参数
src类型为 CV_8UC1 的输入数组。对于二维情况,矩阵的尺寸必须是 2 的幂;在一维情况下,高度必须为 1,而宽度必须是 2 的幂。
dst类型为 CV_32FC2 的计算后的 FFT 矩阵。FFT 的实部(Re)和虚部(Im)系数存储在不同的通道中。因此 dst 的尺寸为 (srcWidth, srcHeight)

◆ FFT() [2/2]

void cv::fastcv::FFT ( InputArray src,
OutputArray dst )

#include <opencv2/fastcv/fft.hpp>

计算实值矩阵的一维或二维快速傅里叶变换。对于二维情况,输入和输出矩阵的宽度和高度必须是 2 的幂。对于一维情况,矩阵的高度必须为 1,而宽度必须是 2 的幂。接受 8 位无符号整数数组,而 cv::dft 接受浮点或复数数组。

参数
src类型为 CV_8UC1 的输入数组。对于二维情况,矩阵的尺寸必须是 2 的幂;在一维情况下,高度必须为 1,而宽度必须是 2 的幂。
dst类型为 CV_32FC2 的计算后的 FFT 矩阵。FFT 的实部(Re)和虚部(Im)系数存储在不同的通道中。因此 dst 的尺寸为 (srcWidth, srcHeight)

◆ fillConvexPoly()

void cv::fastcv::fillConvexPoly ( InputOutputArray img,
InputArray pts,
Scalar color )

#include <opencv2/fastcv/draw.hpp>

绘制凸多边形。该函数用指定颜色填充凸多边形的内部。要求宽度和步长(stride)必须是 8 的倍数。

参数
img要绘制的图像。应具有最多 4 个 8 位通道
pts多边形点坐标数组。应包含 N 个双通道或 2*N 个单通道 32 位整数元素
color绘制多边形的颜色,存储为 B, G, R 和 A(如果支持)

◆ filter2D() [1/2]

void cv::fastcv::dsp::filter2D ( InputArray _src,
OutputArray _dst,
int ddepth,
InputArray _kernel )

#include <opencv2/fastcv/blur_dsp.hpp>

使用非可分算子过滤图像。

参数
_src类型为 CV_8UC1 的输入图像,源尺寸应大于 176*144
_dst类型为 CV_8UC1、CV_16SC1 或 CV_32FC1 的输出图像
ddepth输出图像的深度
_kernel滤波器算子数据

◆ filter2D() [2/2]

void cv::fastcv::filter2D ( InputArray _src,
OutputArray _dst,
int ddepth,
InputArray _kernel )

#include <opencv2/fastcv/blur.hpp>

使用非可分算子进行 NxN 相关运算。最大到算子宽度一半的边界将被忽略。

参数
_src类型为 CV_8UC1 的输入图像
_dst类型为 CV_8UC1、CV_16SC1 或 CV_32FC1 的输出图像
ddepth输出图像的深度
_kernel滤波器算子数据
另请参阅
二维滤波 (Filter2D)

◆ gaussianBlur()

void cv::fastcv::gaussianBlur ( InputArray _src,
OutputArray _dst,
int kernel_size = 3,
bool blur_border = true )

#include <opencv2/fastcv/blur.hpp>

sigma = 0 且具有正方形算子尺寸的高斯模糊。处理边界的方式与 cv::GaussianBlur 不同,会导致输出略有差异。

参数
_src类型为 CV_8UC1 的输入图像
_dst类型为 CV_8UC1 的输出图像
kernel_size滤波器算子尺寸。3、5、11 其中之一
blur_border如果设为 true,边界将通过对相邻值进行 0 填充来模糊(恒定边界的一种变体)。如果设为 false,则忽略最大到算子宽度一半的边界(例如 3x3 情况下为 1 像素)。
另请参阅
高斯模糊 (GaussianBlur)

◆ gemm()

void cv::fastcv::gemm ( InputArray src1,
InputArray src2,
OutputArray dst,
float alpha = 1.0,
InputArray src3 = noArray(),
float beta = 0.0 )

#include <opencv2/fastcv/arithm.hpp>

两个浮点矩阵的矩阵乘法 R = a*A*B + b*C,其中 A、B、C、R 是矩阵,a、b 是常数。针对 Qualcomm 处理器进行了优化。

参数
src1类型为 CV_32F 的第一源矩阵
src2类型为 CV_32F 的第二源矩阵,行数与 src1 的列数相同
dst类型为 CV_32F 的结果矩阵
alphasrc1 和 src2 的乘法因子
src3可选的类型为 CV_32F 的第三个矩阵,将被加到矩阵乘积中
betasrc3 的乘法因子

◆ getQcAllocator()

cv::MatAllocator * cv::fastcv::getQcAllocator ( )

#include <opencv2/fastcv/allocator.hpp>

获取默认的 Qualcomm 分配器。该函数返回一个指向默认 Qualcomm 分配器的指针,该分配器针对 DSP 使用进行了优化。

返回
指向默认 FastCV 分配器的指针。

◆ houghLines()

void cv::fastcv::houghLines ( InputArray src,
OutputArray lines,
double threshold = 0.25 )

#include <opencv2/fastcv/hough.hpp>

执行霍夫直线检测。

参数
src包含二进制轮廓的输入 8 位图像。宽度和步长应能被 8 整除
lines输出数组,包含 (x1, y1, x2, y2) 形式的检测直线,所有数字均为 32 位浮点数
阈值 (threshold)控制检测直线的最小长度。值必须在 0.0 到 1.0 之间。接近 1.0 的值会减少检测到的直线数量。接近 0.0 的值会检测更多直线,但可能带有噪声。推荐值为 0.25。

◆ IDCT()

void cv::fastcv::IDCT ( InputArray src,
OutputArray dst )

#include <opencv2/fastcv/ipptransform.hpp>

该函数对输入图像执行 8x8 逆离散余弦变换。在 Qualcomm 处理器上,逆变换情况下的执行速度比 cv::dct 更快。

参数
src类型为 CV_16SC1 的输入图像
dst类型为 CV_8UC1 的输出图像

◆ IFFT() [1/2]

void cv::fastcv::dsp::IFFT ( InputArray src,
OutputArray dst )

#include <opencv2/fastcv/fft_dsp.hpp>

计算复值矩阵的一维或二维逆快速傅里叶变换。对于二维情况,输入和输出矩阵的宽度和高度必须是 2 的幂。对于一维情况,矩阵的高度必须为 1,而宽度必须是 2 的幂。

参数
src类型为 CV_32FC2 的输入数组,包含存储在不同通道中的 FFT 实部和虚部系数。对于二维情况,矩阵尺寸必须是 2 的幂;在一维情况下,高度必须为 1,而宽度必须是 2 的幂。
dst类型为 CV_8U 的计算后的 IFFT 矩阵。该矩阵为实值,不含虚部成分。因此 dst 的尺寸为 (srcWidth, srcHeight)

◆ IFFT() [2/2]

void cv::fastcv::IFFT ( InputArray src,
OutputArray dst )

#include <opencv2/fastcv/fft.hpp>

计算复值矩阵的一维或二维逆快速傅里叶变换。对于二维情况,输入和输出矩阵的宽度和高度必须是 2 的幂。对于一维情况,矩阵的高度必须为 1,而宽度必须是 2 的幂。

参数
src类型为 CV_32FC2 的输入数组,包含存储在不同通道中的 FFT 实部和虚部系数。对于二维情况,矩阵尺寸必须是 2 的幂;在一维情况下,高度必须为 1,而宽度必须是 2 的幂。
dst类型为 CV_8U 的计算后的 IFFT 矩阵。该矩阵为实值,不含虚部成分。因此 dst 的尺寸为 (srcWidth, srcHeight)

◆ integrateYUV()

void cv::fastcv::integrateYUV ( InputArray Y,
InputArray CbCr,
OutputArray IY,
OutputArray ICb,
OutputArray ICr )

#include <opencv2/fastcv/arithm.hpp>

YCbCr420 图像的积分图。注意:输入高度应为 2 的倍数。输入宽度和步长应为 16 的倍数。输出步长应为 8 的倍数。针对 Qualcomm 处理器进行了优化。

参数
Y8UC1 YCbCr420 图像的输入 Y 分量。
CbCr8UC1 YCbCr420 图像的输入 CbCr 分量(交错)。
IYCV_32S 单通道输出 Y 积分图,尺寸为 (Y 高度 + 1)*(Y 宽度 + 1)
ICbCV_32S 单通道输出 Cb 积分图,尺寸为 (Y 高度/2 + 1)*(Y 宽度/2 + 1)
ICrCV_32S 单通道输出 Cr 积分图,尺寸为 (Y 高度/2 + 1)*(Y 宽度/2 + 1)

◆ matmuls8s32()

void cv::fastcv::matmuls8s32 ( InputArray src1,
InputArray src2,
OutputArray dst )

#include <opencv2/fastcv/arithm.hpp>

两个 int8_t 类型矩阵的矩阵乘法。使用有符号整数输入/输出,而 cv::gemm 使用浮点输入/输出。matmuls8s32 在 Qualcomm 处理器上提供更高的速度。

参数
src1类型为 CV_8S 的第一源矩阵
src2类型为 CV_8S 的第二源矩阵
dst类型为 CV_32S 的结果矩阵

◆ meanShift()

int cv::fastcv::meanShift ( InputArray src,
Rect & rect,
TermCriteria termCrit )

#include <opencv2/fastcv/shift.hpp>

应用均值漂移(meanshift)程序并获取最终收敛位置。该函数将均值漂移程序应用于原始图像(通常是概率图)并获取最终收敛位置。当达到所需精度或最大迭代次数时,收敛位置搜索将停止。算法中使用的矩(Moments)是以浮点数计算的。该函数与 cv::meanShift 并非位精确一致,但在 Snapdragon 处理器上提供了更好的延迟表现。

参数
src8 位、32 位整数或 32 位浮点灰度图像,通常是基于对象直方图计算的概率图
rect初始搜索窗口位置,同时返回最终收敛的窗口位置
termCrit用于完成均值漂移的准则,包含两个终止准则:1) epsilon:所需精度;2) max_iter:最大迭代次数
返回
循环停止时的迭代次数

◆ merge()

void cv::fastcv::merge ( InputArrayOfArrays mv,
OutputArray dst )

#include <opencv2/fastcv/channel.hpp>

从多个单通道 CV_8U 矩阵创建一个多通道矩阵。针对 Qualcomm 处理器进行了优化。

参数
mv待合并矩阵的输入向量;mv 中的所有矩阵必须为 CV_8UC1 类型且具有相同尺寸。注意:矩阵数量可以是 2、3 或 4。
dst深度为 CV_8U 且尺寸与 mv[0] 相同的输出数组;通道数将是矩阵数组中矩阵的总数

◆ moments()

cv::Moments cv::fastcv::moments ( InputArray _src,
bool binary )

#include <opencv2/fastcv/moments.hpp>

计算图像像素强度的所有三阶及以下矩。结果返回在 cv::Moments 结构中。此函数 cv::fastcv::moments() 使用浮点计算矩,而 cv::moments() 使用双精度浮点计算矩。

参数
_src类型为 CV_8UC1、CV_32SC1、CV_32FC1 的输入图像
binary如果为 true,则假设图像为二进制(0x00 为黑,0xff 为白),否则假设图像为灰度。

◆ normalizeLocalBox()

void cv::fastcv::normalizeLocalBox ( InputArray _src,
OutputArray _dst,
Size pSize,
bool useStdDev )

#include <opencv2/fastcv/blur.hpp>

计算图像的局部减法和对比度归一化。图像的每个像素都通过以该像素为中心的色块的均值和标准差进行归一化。针对 Qualcomm 处理器进行了优化。

参数
_src输入图像,应具有 CV_8U 或 CV_32F 单通道
_dst输出数组,应为单通道,如果 src 为 CV_8U 类型则为 CV_8S,如果 src 为 CV_32F 类型则为 CV_32F
pSize用于均值和标准差计算的色块尺寸
useStdDev如果为 1,则均值和标准差都用于归一化;如果为 0,则仅使用均值

◆ remap()

void cv::fastcv::remap ( InputArray src,
OutputArray dst,
InputArray map1,
InputArray map2,
int interpolation,
int borderValue = 0 )

#include <opencv2/fastcv/remap.hpp>

对灰度 CV_8UC1 图像应用通用的几何变换。

参数
src第一输入图像数据,类型为 CV_8UC1
dst输出图像数据,类型为 CV_8UC1
map1浮点 CV_32FC1 矩阵,每个元素作为源图像中映射位置的列坐标
map2浮点 CV_32FC1 矩阵,每个元素作为源图像中映射位置的行坐标。
interpolation仅支持 INTER_NEAREST 和 INTER_LINEAR 插值
borderValue恒定像素值

◆ remapRGBA()

void cv::fastcv::remapRGBA ( InputArray src,
OutputArray dst,
InputArray map1,
InputArray map2,
int interpolation )

#include <opencv2/fastcv/remap.hpp>

使用双线性或最近邻插值对 4 通道 CV_8UC4 图像应用通用几何变换。

参数
src第一输入图像数据,类型为 CV_8UC4
dst输出图像数据,类型为 CV_8UC4
map1浮点 CV_32FC1 矩阵,每个元素作为源图像中映射位置的列坐标
map2浮点 CV_32FC1 矩阵,每个元素作为源图像中映射位置的行坐标。
interpolation仅支持 INTER_NEAREST 和 INTER_LINEAR 插值

◆ resizeDown()

void cv::fastcv::resizeDown ( cv::InputArray _src,
cv::OutputArray _dst,
Size dsize,
double inv_scale_x,
double inv_scale_y )

#include <opencv2/fastcv/scale.hpp>

使用指定的缩放因子或尺寸缩小图像。此函数支持单通道 (CV_8UC1) 和双通道 (CV_8UC2) 图像。

参数
_src输入图像数据,类型为 CV_8UC1 或 CV_8UC2。
_dst输出图像数据,类型为 CV_8UC1 或 CV_8UC2。
dsize输出图像的期望尺寸。如果为空,则使用 inv_scale_x 和 inv_scale_y 计算。
inv_scale_x宽度的逆缩放因子。如果提供了 dsize,则忽略此参数。
inv_scale_y高度的逆缩放因子。如果提供了 dsize,则忽略此参数。
注意
如果未指定 dsize,则 inv_scale_x 和 inv_scale_y 必须为正数。

◆ sepFilter2D()

void cv::fastcv::sepFilter2D ( InputArray _src,
OutputArray _dst,
int ddepth,
InputArray _kernelX,
InputArray _kernelY )

#include <opencv2/fastcv/blur.hpp>

使用可分算子进行 NxN 相关运算。如果 srcImg 和 dstImg 指向同一地址且 srcStride 等于 dstStride,则会进行就地操作。最大到算子宽度一半的边界将被忽略。处理溢出的方式与 OpenCV 不同,该函数将对中间结果和最终结果进行右移。

参数
_src类型为 CV_8UC1 的输入图像
_dst类型为 CV_8UC1、CV_16SC1 的输出图像
ddepth输出图像的深度
_kernelXx 方向的滤波器算子数据
_kernelYY 方向的滤波器算子数据(对于 CV_16SC1,kernelX 和 kernelY 应相同)
另请参阅
可分二维滤波 (sepFilter2D)

◆ sobel()

void cv::fastcv::sobel ( InputArray _src,
OutputArray _dx,
OutputArray _dy,
int kernel_size,
int borderType,
int borderValue )

#include <opencv2/fastcv/edges.hpp>

从源亮度数据创建不带归一化的 2D 梯度图像。计算 X 方向 1 阶导数或 Y 方向 1 阶导数,或同时计算两者。

参数
_src类型为 CV_8UC1 的输入图像
_dx存储水平梯度的缓冲区。大小必须为 (dxyStride)*(height) 字节。如果为 NULL,则不计算水平梯度。
_dy存储垂直梯度的缓冲区。大小必须为 (dxyStride)*(height) 字节。如果为 NULL,则不计算垂直梯度
kernel_sizeSobel 算子尺寸,支持 3x3, 5x5, 7x7
borderType边界类型,支持 BORDER_CONSTANT, BORDER_REPLICATE
borderValue恒定边界的边界值

◆ sobel3x3u8()

void cv::fastcv::sobel3x3u8 ( InputArray _src,
OutputArray _dst,
OutputArray _dsty = noArray(),
int ddepth = CV_8U,
bool normalization = false )

#include <opencv2/fastcv/edges.hpp>

从源亮度数据创建不带归一化的 2D 梯度图像。该函数在 3x3 邻域上计算中心差分,然后将结果与 Sobel 算子卷积,最大到算子宽度一半的边界将被忽略。

参数
_src类型为 CV_8UC1 的输入图像
_dst如果给定了 _dsty,则是存储水平梯度的缓冲区;否则,输出 |dx|+|dy| 的 8 位图像。缓冲区大小为 (srcwidth)*(srcheight) 字节
_dsty(可选)存储垂直梯度的缓冲区。尺寸必须为 (srcwidth)*(srcheight)。
ddepth输出图像的深度:CV_8SC1, CV_16SC1, CV_32FC1
normalization是否对结果进行归一化

◆ sobelPyramid()

void cv::fastcv::sobelPyramid ( InputArrayOfArrays pyr,
OutputArrayOfArrays dx,
OutputArrayOfArrays dy,
int outType = CV_8S )

#include <opencv2/fastcv/pyramid.hpp>

从图像金字塔创建梯度金字塔。注意:在梯度计算期间会忽略边界。

参数
pyr单通道 8 位图像的输入金字塔。仅支持连续图像。
dx与 pyr 尺寸相同的水平 Sobel 梯度金字塔
dy与 pyr 尺寸相同的垂直 Sobel 梯度金字塔
outType输出数据类型,可以是 CV_8S、CV_16S 或 CV_32F

◆ split()

void cv::fastcv::split ( InputArray src,
OutputArrayOfArrays mv )

#include <opencv2/fastcv/channel.hpp>

将 CV_8U 多通道矩阵拆分为多个 CV_8UC1 矩阵。针对 Qualcomm 处理器进行了优化。

参数
src深度为 CV_8U 的输入 2、3 或 4 通道矩阵
mv尺寸为 src.channels() 的 CV_8UC1 矩阵输出向量

◆ sumOfAbsoluteDiffs()

void cv::fastcv::dsp::sumOfAbsoluteDiffs ( cv::InputArray _patch,
cv::InputArray _src,
cv::OutputArray _dst )

#include <opencv2/fastcv/sad_dsp.hpp>

图像与 8x8 模板的绝对差之和(SAD)。

参数
_patch第一输入图像数据,类型为 CV_8UC1
_src输入图像数据,类型为 CV_8UC1
_dst输出图像数据,类型为 CV_16UC1

◆ thresholdOtsu()

void cv::fastcv::dsp::thresholdOtsu ( InputArray _src,
OutputArray _dst,
bool type )

#include <opencv2/fastcv/thresh_dsp.hpp>

使用大津法(Otsu's method)对灰度图像进行二值化。如果像素值大于阈值,则将其设置为 max(255);否则设置为 min(0)。搜索使类内方差最小化的阈值。

参数
_src输入 8 位灰度图像。缓冲区大小为 srcStride*srcHeight 字节。
_dst输出 8 位二值化图像。缓冲区大小为 dstStride*srcHeight 字节。
type阈值类型,可以是 0 或 1。注意:对于阈值类型=0,如果像素值大于阈值,则设置为 maxValue;否则设为零。对于阈值类型=1,如果像素值大于阈值,则设置为零;否则设为 maxValue。

◆ thresholdRange()

void cv::fastcv::thresholdRange ( InputArray src,
OutputArray dst,
int lowThresh,
int highThresh,
int trueValue,
int falseValue )

#include <opencv2/fastcv/thresh.hpp>

根据一对阈值对灰度图像进行二值化。二值化后的图像将处于用户选择的两个值中。该函数在 Snapdragon 处理器上提供了更好的延迟表现。

参数
src8 位灰度图像
dst与输入图像尺寸和类型相同的输出图像,可以与输入图像相同
lowThresh用于二值化的低阈值
highThresh用于二值化的向阈值
trueValue如果源像素在阈值对定义的闭区间范围内,则分配给目标像素的值
falseValue如果源像素在阈值对定义的闭区间范围外,则分配给目标像素的值

◆ trackOpticalFlowLK() [1/2]

void cv::fastcv::trackOpticalFlowLK ( InputArray src,
InputArray dst,
InputArrayOfArrays srcPyr,
InputArrayOfArrays dstPyr,
InputArray ptsIn,
OutputArray ptsOut,
InputArray ptsEst,
OutputArray statusVec,
cv::Size winSize = cv::Size(7, 7),
cv::TermCriteria termCriteria = cv::TermCriteria(cv::TermCriteria::MAX_ITER|cv::TermCriteria::EPS, 7, 0.03f *0.03f) )

#include <opencv2/fastcv/tracking.hpp>

使用 Lucas-Kanade 算法计算稀疏光流。接受 8 位无符号整数图像。在 Qualcomm 处理器上提供更快的执行速度。

参数
src类型为 8U 的输入单通道图像,初始运动帧
dst类型为 8U 的输入单通道图像,最终运动帧,应具有与初始帧相同的尺寸和步长
srcPyr从初始运动帧构建的金字塔
dstPyr从最终运动帧构建的金字塔
ptsIn起始点的初始子像素坐标数组,应包含 32F 2D 元素
ptsOut计算出的最终点输出数组,应包含 32F 2D 元素
ptsEst最终点的估计输入数组,应包含 32F 2D 元素,可以为空
statusVec指示每个特征状态的 int32 值输出数组,可以为空
winSize用于光流搜索的窗口尺寸。宽度和高度必须为奇数。建议值为 5、7 或 9
termCriteria包含最大迭代次数、最大 epsilon 和停止条件的终止准则

◆ trackOpticalFlowLK() [2/2]

void cv::fastcv::trackOpticalFlowLK ( InputArray src,
InputArray dst,
InputArrayOfArrays srcPyr,
InputArrayOfArrays dstPyr,
InputArrayOfArrays srcDxPyr,
InputArrayOfArrays srcDyPyr,
InputArray ptsIn,
OutputArray ptsOut,
OutputArray statusVec,
cv::Size winSize = cv::Size(7, 7),
int maxIterations = 7 )

#include <opencv2/fastcv/tracking.hpp>

LK 跟踪函数 v1 版本的重载。

参数
src类型为 8U 的输入单通道图像,初始运动帧
dst类型为 8U 的输入单通道图像,最终运动帧,应具有与初始帧相同的尺寸和步长
srcPyr从初始运动帧构建的金字塔
dstPyr从最终运动帧构建的金字塔
srcDxPyrsrcPyr 的 X 方向 Sobel 导数金字塔
srcDyPyrsrcPyr 的 Y 方向 Sobel 导数金字塔
ptsIn起始点的初始子像素坐标数组,应包含 32F 2D 元素
ptsOut计算出的最终点输出数组,应包含 32F 2D 元素
statusVec指示每个特征状态的 int32 值输出数组,可以为空
winSize用于光流搜索的窗口尺寸。宽度和高度必须为奇数。建议值为 5、7 或 9
maxIterations尝试的最大迭代次数

◆ warpAffine()

void cv::fastcv::warpAffine ( InputArray _src,
OutputArray _dst,
InputArray _M,
Size dsize,
int interpolation = INTER_LINEAR,
int borderValue = 0 )

#include <opencv2/fastcv/warp.hpp>

使用提供的变换矩阵对输入图像执行仿射变换。

该函数根据变换矩阵执行两种类型的操作

  1. 标准仿射变换 (2x3 矩阵)
    • 使用仿射矩阵变换整个输入图像
    • 支持 CV_8UC1 和 CV_8UC3 类型
  2. 带变换的色块提取 (2x2 矩阵)
    • 从输入图像中提取并变换一个色块(patch)
    • 仅支持 CV_8UC1 类型
    • 如果输入是 ROI:从原始图像的 ROI 中心提取色块
    • 如果输入是全图:从图像中心提取色块
参数
_src输入图像。支持的格式:
  • CV_8UC1:8 位单通道
  • CV_8UC3:8 位三通道 - 仅限 2x3 矩阵
_dst输出图像。将与 src 类型相同,尺寸由 dsize 指定
_M2x2/2x3 仿射变换矩阵(逆向映射)
dsize输出尺寸
  • 对于 2x3 矩阵:输出图像的尺寸
  • 对于 2x2 矩阵:提取出的色块尺寸
interpolation插值方法。仅适用于 CV_8UC1 输入的 2x3 变换。选项:
  • INTER_NEAREST:最近邻插值
  • INTER_LINEAR:双线性插值(默认)
  • INTER_AREA:基于区域的插值
  • INTER_CUBIC:双三次插值。注意:CV_8UC3 输入内部始终使用双三次插值
borderValue边界像素的恒定像素值。仅适用于单通道输入的 2x3 变换。
注意
仿射矩阵遵循逆向映射约定,应用于目标坐标以生成相应的源坐标。
该函数使用 'FASTCV_BORDER_CONSTANT' 处理边界,并采用指定的 'borderValue'。

◆ warpPerspective()

void cv::fastcv::warpPerspective ( InputArray _src,
OutputArray _dst,
InputArray _M0,
Size dsize,
int interpolation,
int borderType,
const Scalar & borderValue )

#include <opencv2/fastcv/warp.hpp>

使用透视变换对图像进行变换,与 cv::warpPerspective 相同,但并非位精确一致。

参数
_src输入 8 位图像。
_dst输出 8 位图像。
_M03x3 透视变换矩阵。
dsize输出图像的尺寸。
interpolation插值方法。仅支持 cv::INTER_NEAREST, cv::INTER_LINEARcv::INTER_AREA
borderType像素外推方法。仅支持 cv::BORDER_CONSTANT, cv::BORDER_REPLICATEcv::BORDER_TRANSPARENT
borderValue用于恒定边界情况的值。

◆ warpPerspective2Plane()

void cv::fastcv::warpPerspective2Plane ( InputArray _src1,
InputArray _src2,
OutputArray _dst1,
OutputArray _dst2,
InputArray _M0,
Size dsize )

#include <opencv2/fastcv/warp.hpp>

使用相同的变换对两个图像进行透视变换。适用时使用双线性插值。例如,同时对一个灰度图像和一个 alpha 图像进行变换,或对两个颜色通道进行变换。

参数
_src1第一输入 8 位图像。缓冲区大小为 src1Stride*srcHeight 字节。
_src2第二输入 8 位图像。缓冲区大小为 src2Stride*srcHeight 字节。
_dst1第一个变换后的输出图像(对应 src1)。缓冲区大小为 dst1Stride*dstHeight 字节,类型为 CV_8UC1
_dst2第二个变换后的输出图像(对应 src2)。缓冲区大小为 dst2Stride*dstHeight 字节,类型为 CV_8UC1
_M03x3 透视变换矩阵(逆向映射)
dsize输出图像尺寸