3、影像旋转
3.1、影像旋转头文件
#ifndef RASTERROTATE_H
#define RASTERROTATE_H
#ifndef IRASTERPROCESS_H
#include "seed_rastercore/irasterprocess.h"
#endif
BEGIN_DOX_NAMESPACE
class RasterRotate
: public IRasterProcess
{
REGISTER_ACTUALIZE(RasterRotate, IRasterProcess)
public:
RasterRotate();
~RasterRotate();
virtual QString processName();
virtual int2 saveRasterSize(int, int);
virtual int2 processBlockSize(int, int);
virtual bool rasterProcess(const cv::Mat &, cv::Mat &);
};
END_DOX_NAMESPACE
#endif
3.2、影像旋转源文件
#ifndef RASTERROTATE_H
#include "rasterrotate.h"
#endif
#include "opencvhdr.h"
BEGIN_DOX_NAMESPACE
RasterRotate::RasterRotate()
: IRasterProcess()
{
}
RasterRotate::~RasterRotate()
{
}
QString RasterRotate::processName()
{
return QS("影像旋转");
}
int2 RasterRotate::saveRasterSize(int xSize, int ySize)
{
return int2(ySize, xSize);
}
int2 RasterRotate::processBlockSize(int xSize, int ySize)
{
return int2(xSize, ySize);
}
bool RasterRotate::rasterProcess(const cv::Mat &srcMat, cv::Mat &desMat)
{
if(srcMat.empty()) return false;
int cols = srcMat.rows, rows = srcMat.cols;
desMat = Mat(rows, cols, srcMat.type());
for(int _row = 0; _row < rows; ++_row)
{
for(int _col = 0; _col < cols; ++_col)
desMat.at<double>(_row, _col) = srcMat.at<double>(_col, _row);
}
return true;
}
END_DOX_NAMESPACE
4、注册影像旋转类
#ifndef MODULEMACRO_CORE_H
#include "core/modulemacro.h"
#endif
#include "rasterrotate.h"
BEGIN_DOX_NAMESPACE
BEGIN_DEFINE_DOX_MODULE("rastercore")
XDEFINE_CLASSMAP_ENTRY_NORMAL(RasterRotate)
FINISH_DEFINE_DOX_MODULE()
END_DOX_NAMESPACE
5、添加影像旋转函数
void rasterRotate()
{
Object<IRasterProcess> iRasterProcess("rastercore.rasterRotate");
Object<IRasterProcessManager> iRaster(NIL);
iRaster->rasterProcess(iRasterProcess);
}
6、注册影像旋转命令
void initApplication()
{
dox::Object<dox::IDoxCommand> cmd(NIL);
cmd->registerCommand("rastercore", "rasterRotate", rasterRotate);
}
7、执行影像旋转功能
7.1、选择数据
7.2、选择保存的文件
7.3、浏览软件之后的数据