影像处理第一篇之影像旋转(软件插件篇)

11 篇文章 1 订阅
4 篇文章 0 订阅

1、插件编写教程

2、影像插件基类讲解

3、影像旋转

3.1、影像旋转头文件

#ifndef RASTERROTATE_H
#define RASTERROTATE_H

#ifndef IRASTERPROCESS_H
#include "seed_rastercore/irasterprocess.h"
#endif /*IRASTERPROCESS*/

BEGIN_DOX_NAMESPACE

class RasterRotate
	: public IRasterProcess
{
	REGISTER_ACTUALIZE(RasterRotate, IRasterProcess)

public:

	/* @接口 默认构造函数
	 * @类名 [RasterRotate]
	 * @邮箱 575814050@qq.com
	 * @时间 2020年3月14号
	 */
	RasterRotate();

	/* @接口 默认构造函数
	 * @类名 [RasterRotate]
	 * @邮箱 575814050@qq.com
	 * @时间 2020年3月14号
	 */
	~RasterRotate();

	/* @接口 数据处理名称
	 * @类名 [IRasterProcess]
	 * @邮箱 575814050@qq.com
	 * @时间 2020年10月11日
	 */
	virtual QString processName();

	/* @接口 影像处理之后的大小
	 * @参数 int 原图像宽度
	 * @参数 int 原图像高度
	 * @参数 int2 处理之后的图像大小
	 * @类名 [RasterRotate]
	 * @邮箱 575814050@qq.com
	 * @时间 2020年10月13日
	 */
	virtual int2 saveRasterSize(int, int);

	/* @接口 计算图像分块的大小
	 * @参数 int 图像宽度
	 * @参数 int 图像高度
	 * @返回 int2 图像块的大小
	 * @类名 [RasterRotate]
	 * @邮箱 575814050@qq.com
	 * @时间 2020年10月11日
	 */
	virtual int2 processBlockSize(int, int);

	/* @接口 数据处理接口
	 * @参数 cv::Mat 待处理影像数据
	 * @参数 cv::Mat 处理完影像结果
	 * @类名 [RasterRotate]
	 * @邮箱 575814050@qq.com
	 * @时间 2020年10月9日
	 */
	virtual bool rasterProcess(const cv::Mat &, cv::Mat &);

};

END_DOX_NAMESPACE

#endif /*RASTERROTATE_H*/

3.2、影像旋转源文件

#ifndef RASTERROTATE_H
#include "rasterrotate.h"
#endif /*RASTERROTATE_H*/

#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 /*MODULEMACRO_CORE_H*/

#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、浏览软件之后的数据

在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值