Skip to main content

opencv相关后端

速览

以下后端输入范围max()均为1.

名称初始化参数输入[类型]输出[类型]备注
DecodeMatdata[str/bytes]result[cv::Mat]
color[str]
cvtColorMatcolordata[cv::Mat]
color[str]
result[cv::Mat]
ResizeMatresize_h,resize_wdata[cv::Mat]result[cv::Mat]
PillowResizeMatresize_h,resize_wdata[cv::Mat]result[cv::Mat]CV_8UC3
ResizePadMatmax_h,max_w,pad_valuedata[cv::Mat]- result[cv::Mat]
- inverse_trans
[std::function<std::pair<float, float>(float x, float y)>]
CV_8UC3
Mat2Tensordevice=cpu,gpudata[cv::Mat]result[at::Tensor]Mat2CpuTensor
Mat2GpuTensor
SaveMatsave_dirdata[cv::Mat]result[cv::Mat]
AlignMatalign,resize_h,max_wdata[cv::Mat]result[cv::Mat],resize_h[int],resize_w[int]max()=UINT32_MAX
DynamicResizeMatdata[cv::Mat],resize_h,resize_w[int]result[cv::Mat]
PerspectiveTransformMatdata[cv::Mat],TASK_BOX_KEYresult[cv::Mat]

DecodeMat

  • 调用opencv,以IMREAD_COLOR模式将图片解码为cv::Mat. 此时输出图片会被转化为3通道BGR图片.
  • 如果解码出的图片为空,则输出无result键值;
  • color 固定的为 "bgr".

cvtColorMat

  • 初始化时的color为目标颜色空间;输入中读取的color为数据的颜色空间;两者不同时,将进行颜色空间转换, 否则,返回输入值;
  • color 目前支持“rgb” 和 “bgr”
  • 进行颜色空间转换时,输入的数据需要为三通道数据,否则将抛出异常。

ResizeMat

  • 调用opencv默认的插值方式进行resize操作;
  • resize_h 和 resize_w 需要为整数,有效范围为[1, 1024 * 1024]

PillowResizeMat

  • 输入的cv::Mat类型需要是CV_8UC3
  • resize_h 和 resize_w 需要为整数,有效范围为[1, 1024 * 1024]
  • 严格保持和pillow的双线性插值结果一致(在大量数据上进行了验证)

ResizePadMat

  • 保持长宽比resize, 左上角对齐以常数pad_value进行pad.
  • 输入的cv::Mat类型需要是CV_8UC3
  • max_h 和 max_w 需要为整数,有效范围为[1, 1024 * 1024]
  • pad_value 支持整数。
  • inverse_trans: 用于将新坐标映射到原始坐标.

Mat2Tensor

  • cv::Mat转为at::Tensor,保持数据类型不变
  • 输出形状1chw
  • 数据进行深拷贝
  • 类似于SyncTensor, 会同步当前流
警告

请插入流管理操作: Sequential[Mat2Tensor,SyncTensor] 或者SyncTensor[Mat2Tensor], 否则Mat2Tensor将使用默认cuda流。

Mat2CpuTensor

  • cv::Mat转为at::Tensor(cpu),保持数据类型不变
  • 输出形状1chw
  • 数据进行深拷贝

Mat2GpuTensor

  • cv::Mat转为at::Tensor(gpu),保持数据类型不变
  • 输出形状1chw

SaveMat

  • save_dir:文件保存目录,需要提前创建;
  • 文件名后缀是.png,名称唯一

AlignMat

计算输入图片在以下条件限制下的目标长宽:

  • 基本保持长宽比
  • 目标高度固定为resize_h
  • 目标宽度不大于max_w
  • 长宽对齐于align

初始化

参数
  • resize_h - 目标长度。
  • max_w - 最大宽度。
  • align - default=32, 目标长和宽需要是此参数的倍数。

前向

参数
  • data - 输入数据,需要是cv::Mat类型。
  • result - 输出,result=data。
  • resize_h - 输出,目标高度
  • resize_w 输出,目标宽度

min()/max()

[1,UINT32_MAX]

DynamicResizeMat

根据前向输入数据提供的resize_hresize_w,对目标图像进行resize操作。

PerspectiveTransformMat

执行透视变换

前向

参数
  • data - 输入数据,需要是cv::Mat类型。
  • TASK_BOX_KEY - 原坐标,类型是std::vector<std::vector<int>>,外部和内部长度分别是4,2,代表四个点,每个点的坐标两个值。顺序为[左上角,右上角,右下角,左下角]
  • result - 输出。