资源简介
使用递归高斯模糊算法实现了高斯模糊,比传统的卷积运算快很多倍,图片越大优势越明显;比FFT快3倍。
目前最快的高斯模糊算法。
基于VS2010,C++源码
代码片段和文件信息
#define WIN32_LEAN_AND_MEAN // trim the excess fat from Windows
/*******************************************************************
* Program: Chapter 7 Bitmap Example 2
* Author: Kevin Hawkins
* Description: 递归高斯模糊 2014/4/23 22:00.
********************************************************************/
////// Defines
#define BITMAP_ID 0x4D42 // the universal bitmap ID
////// Includes
#include // standard Windows app include
#include
#include
#include
#include // standard OpenGL include
#include // OpenGL utilties
#include // OpenGL auxiliary functions
#include “opencv2/highgui/highgui.hpp“
#include “opencv2/imgproc/imgproc.hpp“
#include
using namespace std;
using namespace cv;
////// Global Variables
HDC g_HDC; // global device context
bool fullScreen = false; // true = fullscreen; false = windowed
bool keyPressed[256]; // holds true for keys that are pressed
int width = 512;
int height = 512;
////// Bitmap Information
BITMAPINFOHEADER bitmapInfoHeader; // bitmap info header
unsigned char* bitmapData; // the bitmap data
unsigned char* bitmapData2;
// 高斯半径设置
int step =0;
Point2f srcTri[3];
Point2f dstTri[3];
Mat rot_mat( 2 3 CV_32FC1 );
Mat warp_mat( 2 3 CV_32FC1 );
Mat src warp_dst warp_rotate_dst;
void IMG_GaussBlur(unsigned char* src unsigned char*& dst int width int height float sigma int chan);
// ----------------------------------------------
unsigned int listbase; // display list base
unsigned int CreateBitmapFont(char *fontName int fontSize)
{
HFONT hFont; // windows font
unsigned int base;
base = glGenLists(96); // create storage for 96 characters
if (stricmp(fontName “symbol“) == 0)
{
hFont = CreateFont(fontSize 0 0 0 FW_BOLD FALSE FALSE FALSE SYMBOL_CHARSET
OUT_TT_PRECIS CLIP_DEFAULT_PRECIS ANTIALIASED_QUALITY
FF_DONTCARE | DEFAULT_PITCH fontName);
}
else
{
hFont = CreateFont(fontSize 0 0 0 FW_BOLD FALSE FALSE FALSE ANSI_CHARSET
OUT_TT_PRECIS CLIP_DEFAULT_PRECIS ANTIALIASED_QUALITY
FF_DONTCARE | DEFAULT_PITCH fontName);
}
if (!hFont)
return 0;
Selectobject(g_HDC hFont);
wglUseFontBitmaps(g_HDC 32 96 base);
return base;
}
void ClearFont(unsigned int base)
{
if (base != 0)
glDeleteLists(base 96);
}
void PrintString(unsigned int base char *str)
{
if ((base == 0) || (str == NULL))
return;
glPushAttrib(GL_LIST_BIT);
glListbase(base - 32);
glCallLists(strlen(str) GL_UNSIGNED_BYTE str);
glPopAttrib();
}
void CleanUp()
{
ClearFont(listbase);
}
//----------------------------------------------
// DrawBitmap
// desc: draws the bitmap image data in bitmapImage at the location
// (350300) in the window. (350300) is the lower-left corner
// of the bitmap.
void DrawBitmap(long width long height unsigned
相关资源
- 在1、2、3...9保持这个顺序之间可任意
- 蛇形矩阵递归算法
- c语言,二叉树,前中后,递归,非递
- 递归反转字符串带中文
- 0-1背包问题-递归算法 c语言实现
- 已知head为单链表的表头指针,链表中
- 矩形切割,用的是递归算法。
- 5.1归并递归排序.cpp
- c++递归实现数组遍历和阶乘函数
- 递归实现的最简单分型图形实现
- 分治法解决凸包问题用C语言递归调用
- 数据结构c语言版建立二叉树,中序非
- 八皇后问题C++递归实现
- c语言汉诺塔算法,递归,非递归
- C++实战源码-使用递归过程实现阶乘运
- 递归调用
- c++ 递归分鱼算法
- opencv调入显示图片做高斯模糊
- 当今世界上检索速度最快的哈希算法
- 语法分析C语言源代码附实验报告
- 数据结构单链表实现大数阶乘C++递归
- c语言实现二叉树的前中后序遍历 递归
- 完全可以运行的迷宫程序递归和非递
- 数据结构(C语言版)迷宫求解问题
- 计算24点C++源码
- 背包问题的求解
- 0-1背包问题 回溯算法代码
- 利用栈实现迷宫问题的非递归解法
- 编译原理课程设计-FOR循环 递归下降法
- 递归下降语法分析器 算术表达式
评论
共有 条评论