影像处理第三篇之高斯滤波(软件插件篇)

11 篇文章 1 订阅
6 篇文章 1 订阅

1、插件编写教程

2、影像插件基类讲解

3、高斯滤波

3.1、头文件

#ifndef RASTERGAUSSIANBLUR_H
#define RASTERGAUSSIANBLUR_H

#include "seed_rastercore/irasterprocess.h"

BEGIN_DOX_NAMESPACE

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

public:

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

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

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

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

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

	/* @接口 处理的波段
	 * @类名 [IRasterProcess]
	 * @作者 杨发荷
	 * @邮箱 575814050@qq.com
	 * @时间 2020年10月19日
	 */
	virtual IntsArray processBandMap(const QStringList &);

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

};

END_DOX_NAMESPACE

#endif /*RASTERGAUSSIANBLUR_H*/

3.2、源文件

#include "rastergaussianblur.h"
#include "opencvhdr.h"

BEGIN_DOX_NAMESPACE

RasterGaussianBlur::RasterGaussianBlur()
	: IRasterProcess()
{

}

RasterGaussianBlur::~RasterGaussianBlur()
{
}

QString RasterGaussianBlur::processName()
{
	return QS("高斯滤波");
}

int2 RasterGaussianBlur::processBlockSize(int xSize, int ySize)
{
	return int2(xSize / 2, ySize / 2);
}

bool RasterGaussianBlur::rasterProcess(const Mat &srcMat, Mat &desMat)
{
	GaussianBlur(srcMat, desMat, cv::Size(5, 5), 0, 0);
	return true;
}

int3 RasterGaussianBlur::saveRasterSize(int xSize, int ySize, int zSize)
{
	return int3(xSize, ySize, zSize);
}

IntsArray RasterGaussianBlur::processBandMap(const QStringList &bandNames)
{
	IntsArray bandMaps;
	for(int idx = 0; idx < bandNames.length(); ++idx)
	{
		IntArr bMaps; bMaps << (idx + 1); bandMaps.append(bMaps);
	}
	return bandMaps;
}

END_DOX_NAMESPACE

4、注册类

#ifndef MODULEMACRO_CORE_H
#include "core/modulemacro.h"
#endif /*MODULEMACRO_CORE_H*/

#include "rastergaussianblur.h"

BEGIN_DOX_NAMESPACE
BEGIN_DEFINE_DOX_MODULE("RasterFilter")
	XDEFINE_CLASSMAP_ENTRY_NORMAL(RasterGaussianBlur)
FINISH_DEFINE_DOX_MODULE()
END_DOX_NAMESPACE

5、添加函数

void rasterGaussianBlur()
{
	Object<IRasterProcess> iRasterProcess("RasterFilter.RasterGaussianBlur");
	Object<IRasterProcessManager> iRaster(NIL); iRaster->rasterProcess(iRasterProcess);
}

6、注册命令

bool initApplication()
{
	Object<IDoxCommand> iCommand(NIL);
	iCommand->registerCommand("RasterFilter", "rasterGaussianBlur", rasterGaussianBlur);
	return true;
}

7、执行功能

7.1、选择数据

在这里插入图片描述

7.2、选择保存的文件

在这里插入图片描述

7.3、浏览数据

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值