C++实现高斯滤波器
2024-10-13 12:28:24
在matlab中,我们经常用到高斯滤波器,生成滤波器一般都是这样的函数psf = fspecial('gauss', GaussSize, sigma),但是在vs2010中用到的高斯滤波器不能自己直接定义一个滤波器,所以我就用c++与OPENCV的mat类实现了高斯滤波器,具体代码如下:
#include"opencv24.h"
using namespace std;
Mat MakeGaussFilt(int GauSize, double Sigma)
{
double siz = (GauSize-1.0)/;
Mat x = Mat(GauSize,GauSize,CV_64F);
Mat y = Mat(GauSize,GauSize,CV_64F);
for (int i=;i<GauSize;i++)
{
x.col(i)=double(i-siz);
y.row(i)=double(i-siz);
}
Mat argu = Mat(GauSize,GauSize,CV_64F);
Mat x2=x.mul(x);
Mat y2=y.mul(y);
argu = -(x2+y2)/(*Sigma*Sigma);
Mat h = Mat(GauSize,GauSize,CV_64F);
exp(argu,h);
Scalar sumh=sum(h);
double summ=sumh.val[];
h=h/summ;
return h;
}
其中Mat类用到了OPENCV库,自己要在VS上进行库的导入,函数经过亲测,可行。
最新文章
- pk8和x509.pem转换成keystore
- 关于各种类型数据char、int、double、float 所占空间长度的计算,而char类型让我长姿势了
- MyEclipse 8.5整合Git,并在Github上发布项目【转】
- A daemon process class in python
- Introduction to Structured Data
- Careercup - Facebook面试题 - 6026101998485504
- 摘录 javescript 常用函数
- [置顶] 应广大童鞋的要求提供一个封装模块,直接和ADB 服务进程交互
- 一场完美的“秒杀”:API加速的业务逻辑
- UOJ #311「UNR #2」积劳成疾
- 《PHP内核剖析 - 变量/内存管理》
- js 判断数组中是否有重复值
- 容器化 — 基于Docker技术容器云
- Markdown 引用
- RNN知识点
- P1242 新汉诺塔(搜索+模拟退火)
- 【Linux】percona-toolkit工具包的安装
- 【转载】GetDeviceCaps()函数相关说明
- Jquery DataTable基本使用
- android 打开系统相机,
热门文章
- CodeForces-1132C Painting the Fence
- python第三天(dictionary应用)转
- Halcon17对硬件配置要求
- python的三种控制流
- Linux杂技
- Python执行Linux系统命令的4种方法
- Thread.currentThread().getContextClassLoader().loadClass(className)和Class.forName(className)的区别
- 【bzoj2049】[Sdoi2008]Cave 洞穴勘测 LCT
- hdu 1267 下沙的沙子有几粒? (递推)
- 【题解】【CF Round #278】Tourists