影像插件基类讲解
1、软件插件编写教程
2、基类【IRasterProcess】
影像处理插件的注册类都是从IRasterProcess继承。影像数据输入是使用了OpenCV中的图像句很Mat,处理完的影像数据也是通过Mat返回。通过IRasterProcess类,可以设置影像处理的块的大小,也可以设置影像保存的大小以及数据处理完之后的波段名称。
2.1、基类代码
#ifndef IRASTERPROCESS_H
#define IRASTERPROCESS_H
#ifndef IOBJECT_CORE_H
#include "core/iobject.h"
#endif /*IOBJECT_CORE_H*/
EXTERN_NAMESPACE_CLASS(cv, Mat)
BEGIN_DOX_NAMESPACE
class IRasterProcess
: public IObject
{
REGISTER_INTERFACE(IRasterProcess, IObject)
public:
/* @接口 数据处理名称
* @类名 [IRasterProcess]
* @邮箱 575814050@qq.com
* @时间 2020年10月11日
*/
virtual QString processName() = 0;
/* @接口 影像处理之后的大小
* @参数 int 原图像宽度
* @参数 int 原图像高度
* @参数 int2 处理之后的图像大小
* @类名 [IRasterProcessManager]
* @邮箱 575814050@qq.com
* @时间 2020年10月13日
*/
virtual int2 saveRasterSize(int, int) = 0;
/* @接口 计算图像分块的大小
* @参数 int 图像宽度
* @参数 int 图像高度
* @返回 int2 图像块的大小
* @类名 [RasterDataConvert]
* @邮箱 575814050@qq.com
* @时间 2020年10月11日
*/
virtual int2 processBlockSize(int, int) = 0;
/* @接口 数据处理接口
* @参数 cv::Mat 待处理影像数据
* @参数 cv::Mat 处理完影像结果
* @类名 [IRasterProcess]
* @邮箱 575814050@qq.com
* @时间 2020年10月9日
*/
virtual bool rasterProcess(const cv::Mat &, cv::Mat &) = 0;
};
END_DOX_NAMESPACE
#endif /*IRASTERPROCESS_H*/
2.2、接口讲解
2.2.1、数据处理名称
/* @接口 数据处理名称
* @类名 [IRasterProcess]
* @邮箱 575814050@qq.com
* @时间 2020年10月11日
*/
virtual QString processName() = 0;
这个接口主要用来设置影像处理的名称,此后这个名称会记录在波段名称中。
比如原波段名称为:band1、band2、band3、band4…
影像处理的名称为:波段运算
则处理完波段名为:band1 波段运算、band2 波段运算、band3波段运算、band4波段运算…
2.2.2、影像处理之后的大小
/* @接口 影像处理之后的大小
* @参数 int 原图像宽度
* @参数 int 原图像高度
* @参数 int2 处理之后的图像大小
* @类名 [IRasterProcessManager]
* @邮箱 575814050@qq.com
* @时间 2020年10月13日
*/
virtual int2 saveRasterSize(int, int) = 0;
这个接口主要是用来设置影像结果的大小。传入的两个参数是原始影像的宽高,返回值为影像结果的大小。
比如对影像进行旋转90度,那么原图像的宽为输出图像的高,原图像的高为输出图像的宽。
2.2.3、图像分块处理大小
/* @接口 计算图像分块的大小
* @参数 int 图像宽度
* @参数 int 图像高度
* @返回 int2 图像块的大小
* @类名 [RasterDataConvert]
* @邮箱 575814050@qq.com
* @时间 2020年10月11日
*/
virtual int2 processBlockSize(int, int) = 0;
2.2.4、影像数据处理
/* @接口 数据处理接口
* @参数 cv::Mat 待处理影像数据
* @参数 cv::Mat 处理完影像结果
* @类名 [IRasterProcess]
* @邮箱 575814050@qq.com
* @时间 2020年10月9日
*/
virtual bool rasterProcess(const cv::Mat &, cv::Mat &) = 0;