摘要:
不知道从什么时候开始,switch-case语句成了代码坏味道的代名词,写代码的时候小心翼翼地避开它,看到别人代码中的switch-case就皱眉头,想想其实大可不必这样,switch-case语句并不是代码坏味道的根源,坏味道来自糟糕的代码(结构)设计,比如过多的switch-case分支,或者多重switch-case嵌套等等,这些都将导致代码可读性下降,如果再加上代码风格较差,代码不对齐,那么坏味道就相当地大了。 简短的switch-case还是继续用吧,但是对于分支太多的长switch-case最好能想办法化解开,那么什么算长什么算短呢?我也不知道,就以在最低分辨率的显示器上能够在一个 阅读全文
posted @ 2011-01-31 15:55
carekee
阅读(1089)
评论(0)
推荐(0)
摘要:
用C++ TR1 生成随机数原作 :[英文原文]翻译 :Orbit(阿猫阿狗)介绍本文将介绍如何使用C++ TR1(C++ 标准委员会 Technical Report 1) 提供的随机数生成功能 除了介绍基本的一致随机数生成之外,还会介绍随机样本的可能分布,包括:柏努利分布,二项分布,指数分布,伽马分布,几何分布,正态分布和泊松分布。我会指出一些针对特定分布需要注意的地方,比如参数约定,最后还会给出一些提示,比如如何使用TR1不直接支持的分布产生随机数,比如柯西分布,chi-squared分布和Student t。Visual Studio 2008 现在通过 feature pack支持T 阅读全文
posted @ 2011-01-31 15:52
carekee
阅读(2196)
评论(0)
推荐(0)
摘要:
2.1微分 diff函数用以演算一函数的微分项,相关的函数语法有下列4个: diff(f) 传回f对预设独立变数的一次微分值 diff(f,'t') 传回f对独立变数t的一次微分值 diff(f,n) 传回f对预设独立变数的n次微分值 diff(f,'t',n) 传回f对独立变数t的n次微分值 数值微分函数也是用diff,因此这个函数是靠输入的引数决定是以数值或是符号微分,如果引数为向量则执行数值微分,如果引数为符号表示式则执行符号微分。 先定义下列三个方程式,接著再演算其微分项: S1 = '6*x^3-4*x^2+b*x-5'; S2 = 'sin(a)'; S3 = '(1 阅读全文
posted @ 2011-01-31 15:47
carekee
阅读(403)
评论(0)
推荐(0)
摘要:
1-1、基本运算与函数 在MATLAB下进行基本数学运算,只需将运算式直接打入提示号()之後,并按入Enter键即可。例如: (5*2+1.3-0.8)*10/25 ans =4.2000 MATLAB会将运算结果直接存入一变数ans,代表MATLAB运算後的答案(Answer)并显示其数值於萤幕上。 小提示: ""是MATLAB的提示符号(Prompt),但在PC中文视窗系统下,由於编码方式不同,此提示符号常会消失不见,但这并不会影响到MATLAB的运算结果。 我们也可将上述运算式的结果设定给另一个变数x: x = (5*2+1.3-0.8)*10^2/25 x = 42 此时 阅读全文
posted @ 2011-01-31 15:47
carekee
阅读(1245)
评论(0)
推荐(0)
摘要:
1. 消隐处理 例.比较网图消隐前后的图形 z=peaks(50); subplot(2,1,1); mesh(z); title('消隐前的网图') hidden off subplot(2,1,2) mesh(z); title('消隐后的网图') hidden on colormap([0 0 1]) 2. 裁剪处理 利用不定数NaN的特点,可以对网图进行裁剪处理 例.图形裁剪处理 P=peaks(30); subplot(2,1,1); mesh(P); title('裁剪前的网图') subplot(2,1,2); P(20:23,9:15)=NaN*ones(4,7); %剪孔 阅读全文
posted @ 2011-01-31 15:46
carekee
阅读(694)
评论(0)
推荐(0)
摘要:
MATLAB不但擅长於矩阵相关的数值运算,也适合用在各种科学目视表示(Scientific visualization)。 本节将介绍MATLAB基本xy平面及xyz空间的各项绘图命令,包含一维曲线及二维曲面的绘制、列印及存档。 plot是绘制一维曲线的基本函数,但在使用此函数之前,我们需先定义曲线上每一点的x 及y座标。 下例可画出一条正弦曲线: close all; x=linspace(0, 2*pi, 100); % 100个点的x座标 y=sin(x); % 对应的y座标 plot(x,y); 小整理:MATLAB基本绘图函数 plot: x轴和y轴均为线性刻度(Linear sc 阅读全文
posted @ 2011-01-31 15:46
carekee
阅读(1184)
评论(0)
推荐(0)
摘要:
This example finds a zero of the system of two equations and two unknowns: You want to solve the following system for x starting at x0 = [-5 -5]. First, write an M-file that computes F, the values of the equations at x. function F = myfun(x)F = [2*x(1) - x(2) - exp(-x(1)); -x(1) + 2*x(2) - exp(-x(2) 阅读全文
posted @ 2011-01-31 15:45
carekee
阅读(572)
评论(0)
推荐(0)
摘要:
histeq是用来增强对比度的,只能用在黑白图像上,也就是二维数组,你读取进来的图像肯定不是黑白的,彩色图像是三维的,例如读取一个256x256的彩色图像,生成的数组的大小事256x256x3,是三维的,而如果是黑白图像,就是256x256,是二维的。你可以用rgb2gray这个函数将彩色图像转换成黑白图像,代码可以这么写:i1=imread('lena.bmp');[m,n,p] = size(... 阅读全文
posted @ 2011-01-31 15:45
carekee
阅读(7863)
评论(0)
推荐(2)
摘要:
根据帮助C = conv2(A,B) computes the two-dimensional convolution of matrices A and B. If one of these matrices describes a two-dimensional finite impulse response (FIR) filter, the other matrix is filtered in two dimensions在敲姚敏的数字图像处理过程中,平滑I=imread('lena.jpg');J=imnoise(I,'salt & pepper',0.02); subplot(2 阅读全文
posted @ 2011-01-31 15:44
carekee
阅读(1138)
评论(0)
推荐(0)
摘要:
1.读入图片:imread('filename') 如:f=imread('chest.jpg'); 注意:1.括号内为单引号,注意与C区分 2.命令行最后为冒号,否则会吃苦头的哦,呵呵 3.保证图片chest.jpg在当前目录下,否则要给出图片的完全路径 如:f=imread('D:\myimages\chest.jpg'); 4.filename后要跟图片格式后缀。 2.显示图片:imshow(f,[ ]) 注:上述为推荐使用方式,即使用imshow(f),也可以,二者之间的区别可以从下面两幅图的显示上看出 imshow(f)imshow(f,[ ]) 第一幅图片的灰度级较小,而,通过im 阅读全文
posted @ 2011-01-31 15:44
carekee
阅读(1261)
评论(0)
推荐(0)
摘要:
function bars=histogram(I)%用==来提取某个灰度的像素%并用sum来计算个数ticbars=zeros(1,256);for value=0:255 bars(value+1)=sum(value==I(:));endbars=bars./numel(I);toc tic和toc是用来设置计时器,以测试函数的性能。 以如下方式使用这个函数: 首先读取一幅图像,例如: RGB=imread('1.jpg'); 转换为灰度图: I=rgb2gray(RGB); 获取直方图: bars=histogram(I); 显示直方图: bar(0:255 阅读全文
posted @ 2011-01-31 15:44
carekee
阅读(3034)
评论(0)
推荐(0)
摘要:
function hsi=rgb2hsi(rgb)%RGB2HSI Converts an RGB image to HSI% HSI=RGB2HSI(rgb) converts an RGB image to HSI. The input image is% assumed to be of size M-by-N-by-3, where the third dimension accounts% for three image planes:red, green, and blue, in that order. If all RGB% component images are equal 阅读全文
posted @ 2011-01-31 15:43
carekee
阅读(5365)
评论(0)
推荐(0)
摘要:
概括的说,指针其实就是可变数组的首地址,说是可变数组,是 指其包含内容的数量的可变的,并且是可动态申请和释放的,从而充 分节约宝贵的内存资源。我一向喜欢一维数组,除非万不得已,我一 般是不用二维数组的,多维的则更是很少涉足了。因为一维简单,容 易理解,而用指针指向的多维数组就具有相当的复杂性了,也因此更 具有讨论的必要。 闲话少说,这里我就以三个二维数组的比较来展开讨论: (1)、int **Ptr; (2)、int *Ptr[ 5 ]; (3)、int ( *Ptr )[ 5 ]; 以上三例都是整数的二维数组,都可以用形如 Ptr[ 1 ][ 1 ] 的 方式访问其内容;但它们的差 阅读全文
posted @ 2011-01-31 15:41
carekee
阅读(37013)
评论(2)
推荐(4)
摘要:
1. A (*ga)[n] = new A[m][n]; ... delete []ga; 缺点:n必须是已知 优点:调用直观,连续储存,程序简洁(经过测试,析构函数能正确调用) 2. A** ga = new A*[m]; for(int i = 0; i m; i++) ga[i] = new A[n]; ... for(int i = 0; i m; i++) delete []ga[i]; delete []ga; 缺点:非连续储存,程序烦琐,ga为A**类型 优点:调用直观,n可以不是已知 3. A* ga = n 阅读全文
posted @ 2011-01-31 15:41
carekee
阅读(2155)
评论(0)
推荐(0)
摘要:
VC中通过MFC调用opencv的话,启动程序,然后关闭,这个时候并不能结束进程,比如你的程序是Image.exe,关闭程序之后在进程管理器中仍然有image.exe。解决办法:打开工程:在highgui class中找到HAVE_VIDEOINPUT #define HAVE_VIDEOINPUT 1将这句注释掉,重新编译OpenCv的Highgui工程 重新生成Highgui110d.dll然后进入安装目录,在bin下面会发现highgui110d.dll,将原来的highgui110.dll改名,然后将Highgui110d.dll改为Highgui110.dll,搞定。 阅读全文
posted @ 2011-01-31 15:37
carekee
阅读(579)
评论(0)
推荐(0)
摘要:
看了一天的论文,总结出手势识别的三种方法:1、通过肤色识别2、通过haar-like基3、通过HandUv说下各个优缺点1、通过肤色识别 设定人的肤色的范围,监测在这个范围内的 肤色InRange,然后画出给定的区域。 例子:#include "cv.h"#include "cxcore.h"#include "highgui.h"#include "math.h"#include iostream#include stdio.h#include string.h#include conio.h#include sstream#include time.husing n 阅读全文
posted @ 2011-01-31 15:36
carekee
阅读(3491)
评论(1)
推荐(1)
摘要:
AlignMode (读写) 语法:AlignMode As Long 说明:对齐方式(与 SAlign 属性联动)。当控件的 长宽比例与影片不一致且 WMode 不为 ExactFit 时,影片 (没有被放大的)在控件中显示的位置可用该属性调整。 该属性值由标志位组成。如图,将该属性值(二进制)中相 应的位标记为 1 就设置了相应的对齐方向。 属性值与相应的对齐方式(后面括号里是二进制数) 1:左对齐(0001) 2:右对齐(0010) 4:顶对齐 (0100) 8:底对齐(1000) 也可以组合各种对齐方式,同时将两个或以上的位标 记为 1 ,也就是将这四个基本值组合相加。比如同时左 阅读全文
posted @ 2011-01-31 15:34
carekee
阅读(1290)
评论(0)
推荐(0)
摘要:
一、_WIN32_WINNT 与 _WIN32_IE 设置冲突 _WIN32_WINNT 与 _WIN32_IE设置不兼容会导致如下C1189致命错误: StdAfx.cppc:\program files\microsoft sdks\windows\v6.0a\include\sdkddkver.h(217) : fatal error C1189: #error : _WIN32_WINNT settings conflicts with _WIN32_IE setting StdAfx.cpp通常是项目中第一个编译的文件,这个错误将导致编译无法继续进行。产生这个错误的原因是原因是_W 阅读全文
posted @ 2011-01-31 15:33
carekee
阅读(1462)
评论(0)
推荐(0)
摘要:
在BCGControlbar很好用,但是中如果自定义字体的话比较难看 注意菜单好像饱受压迫的一样,郁闷,在mainfrm中的oncreate中加入 LOGFONT lf; //lf定义字体属性 lf.lfOutPrecision= OUT_STROKE_PRECIS; lf.lfClipPrecision= CLIP_STROKE_PRECIS; lf.lfQuality = DRAFT_QUALITY; lf.lfPitchAndFamily= VARIABLE_PITCH|FF_MODERN; lf.lfHeight = 12; lf.lfWidth = 0; lf.lfEscapeme 阅读全文
posted @ 2011-01-31 15:33
carekee
阅读(564)
评论(0)
推荐(0)
摘要:
重载DefWindowProc,在里面截获WM_NCLBUTTONDBLCLK消息进行处理: LRESULT CDlg::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam) { // TODO: Add your specialized code here and/or call the base class if( message == WM_NCLBUTTONDBLCLK && (INT)wParam == HTCAPTION ) { return 0; } return CDialog::DefWindowP 阅读全文
posted @ 2011-01-31 15:30
carekee
阅读(1494)
评论(0)
推荐(0)
摘要:
树型视的三个结构TVINSERTSTRUCT、TVITEM、NMTREEVIEW TVINSERTSTRUCT 包含添加新项到树形视控件所使用的信息。这个结构被TVM_INSERTITEM消息使用。这个结构与TV_INSERTSTRUCT结构是一样的,但它已经按当前的命名习惯重命名了。成员hParent 父项的句柄。如果这个成员的值是TVI_ROOT或NULL,这项将被作为树形控件的根插入。 hInsertAfter 插入的新项之后的项的句柄。或是下列值之一: 值意味 TVI_FIRST在列表的开始插入项 TVI_LAST在列表的最后插入项 TVI_ROOT作为一个根项添加 TVI_SORT以 阅读全文
posted @ 2011-01-31 15:29
carekee
阅读(2795)
评论(0)
推荐(0)
摘要:
第一个工具栏:if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_FLOAT_MULTI | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) || !m_wndToolBar.LoadToolBar(IDR_MAINFRAME)){ TRACE0("Failed to create toolbar\n"); return -1; // fail to create}m_wndToolBar.Set 阅读全文
posted @ 2011-01-31 15:28
carekee
阅读(600)
评论(0)
推荐(0)
摘要:
郁闷,老是乱跑什么啊,清楚记忆功能1、在App中注释掉// LoadStdProfileSettings(4); // Load standard INI file options (including MRU) // SetRegistryBase (_T("Settings")); 2、在MainFrame中注释掉Onclose中的 SaveMDIState (theApp.GetRegSectionPath ());并将原来的 CBCGPMDIFrameWnd::OnClose();改为CMDIFrameWnd::OnClose(); 阅读全文
posted @ 2011-01-31 15:28
carekee
阅读(466)
评论(0)
推荐(0)
摘要:
static关键字是C、C++中都存在的关键字, 它主要有三种使用方式, 其中前两种只指在C语言中使用, 第三种在C++中使用(C,C++中具体细微操作不尽相同, 本文以C++为准). (1) 局部静态变量 静态局部变量有两个用法,记忆功能和全局生存期. (2) 外部静态变量/函数 用于全局变量,主要作用是限制此全局变量被其他的文件调用 (3) 静态数据成员/成员函数 表示这个成员是属于这个类但是不属于类中任意特定对象 下面就这三种使用方式及注意事项分别说明 一、局部静态变量在C/C++中, 局部变量按照存储形式可分为三种auto, static, register 与auto类型(普通)局部 阅读全文
posted @ 2011-01-31 15:26
carekee
阅读(614)
评论(0)
推荐(1)
摘要:
使用MFC向导生成的MDI/SDI程序,其视图的标题默认就是项目名称加上一个数字,这样在一般的情况下倒是可以满足需要了,但在大多数情况下,都不能满足需要,用户一般都想来自己定义自己的视图标题。 在MFC中定制视图的标题,有两种方法,下面简单描述如下: 第一种方法:重载CFrameWnd::OnUpdateFrameTitle函数。 在项目的子框架类CChildFrame类中重载这个函数,首先在类中声明如下: class CChildFrame::public CMDIChildWnd { …… virtual void OnUpdateFrameTitle ( BOOL bAddToTi 阅读全文
posted @ 2011-01-31 15:25
carekee
阅读(680)
评论(0)
推荐(0)
摘要:
////////////////////////以下实现窗体的透明/////////////////////////////////// SetWindowLong(this-GetSafeHwnd(),GWL_EXSTYLE, GetWindowLong(this-GetSafeHwnd(),GWL_EXSTYLE)^0x80000); HINSTANCE hInst = LoadLibrary("User32.DLL"); if(hInst) { typedef BOOL (WINAPI *MYFUNC)(HWND,COLORREF,BYTE,DWORD); MYFUNC 阅读全文
posted @ 2011-01-31 15:24
carekee
阅读(284)
评论(0)
推荐(0)
摘要:
使用COleDateTime类1) 获取当前时间。 CTime time; time = CTime::GetCurrentTime();2) 获取时间元素。 int year = time.GetYear() ; int month = time.GetMonth(); int day = time.GetDay(); int hour = time.GetHour(); int minute = time.GetMinute(); int second = time.GetSecond(); int DayOfWeek = time.GetDayOfWeek() ;3) 获取时间间隔。 C 阅读全文
posted @ 2011-01-31 15:23
carekee
阅读(15686)
评论(1)
推荐(1)
摘要:
文档视图 预备 1. 文档类通常与数据的存取以及其它处理过程有关,而视主要用来表现文档数据的,但每个视必须依附于一个框架(在SDI中依附于MainFrame,在MDI中依附于ChildFrame),框架上可以放置工具栏、菜单等; 2. 某种类型的文档、框架、视共同关联构成一个文档模板类(基类是CDocTemplate,其子类CSingleDocTemplate与CMutiDocTemplate分对应于SDI和MDI),文档模板类在WinApp的初始化时构造; 3. 一个APP可以有N个文档模板,但SDI及MDI框架向导默认生成的都只有一种模板(若需要更多则可以模仿添加);一个文档模板在程序中可 阅读全文
posted @ 2011-01-31 15:22
carekee
阅读(632)
评论(0)
推荐(0)
摘要:
步骤:1、在工具栏上定义菜单比如ID_DATE,ID_TIME2、在CMainFrm中修改(1)LRESULT CMainFrame::OnToolbarReset(WPARAM wp,LPARAM){ //----Example----// UINT uiToolBarId = (UINT) wp; switch (uiToolBarId) { case IDR_MAINFRAME: { CBCGPToolbarDateTimeCtrl dateButton (ID_DATE, CImageHash::GetImageOfCommand (ID_DATE, FALSE)); m_wndT 阅读全文
posted @ 2011-01-31 15:22
carekee
阅读(600)
评论(0)
推荐(0)
摘要:
关于MFC下的文档和视图以及框架之间的访问, 这些问题已经是老生常谈了,但我觉得还是都没有详细的说明,特 别是对于英语较差的人,我查看了一些blog,总结了一下!希望对和我一样的人有点帮助!一: 1: 因为对于SDI程序,主框架窗口就是文档框窗(如果这个也不知道,就要查看一下MFC下的单文档的构成原理了). 下面所说的是关于单文档的. 例子: 在CMainFrame框架中如何得到视图类的指针. 可以 先得到框架指针,然后调用 GetActiveView 函数指向当前活动视. C **View * pView; pView=(C**View*)((CFrameWnd*)AfxGetApp( 阅读全文
posted @ 2011-01-31 15:21
carekee
阅读(322)
评论(0)
推荐(0)
摘要:
C#的写法 public struct EarthPoint { public const double Ea = 6378137; // 赤道半径 WGS84标准参考椭球中的地球长半径(单位:m) public const double Eb = 6356725; // 极半径 public readonly double Longitude,Latidute; public readonly double Jd; public readonly double Wd; public readonly double Ec; public readonly double Ed; public 阅读全文
posted @ 2011-01-31 15:20
carekee
阅读(436)
评论(1)
推荐(0)
摘要:
1.传给未分配内存的const char* (LPCTSTR)指针. CString cstr(asdd); const char* ch = (LPCTSTR)cstr; ch指向的地址和cstr相同。但由于使用const保证ch不会修改,所以安全.2.传给未分配内存的指针. CString cstr = "ASDDSD"; char *ch = cstr.GetBuffer(cstr1.GetLength() + 1); cstr.ReleaseBuffer(); //修改ch指向的值等于修改cstr里面的值. //PS:用完ch后,不用delete ch,因为这样会破坏cstr内部空间 阅读全文
posted @ 2011-01-31 15:20
carekee
阅读(263)
评论(0)
推荐(0)
摘要:
方法一 第一种方法是大家比较熟悉的通过ToolHelp Service提供的API函数来实现。这里用到了3个关键的函数:CreateToolhelp32Snapshot(),Process32First()和Process32Next()。下面给出了关于这三个函数的原形和参数说明; HANDLE WINAPI CreateToolhelp32Snapshot( DWORD dwFlags, //系统快照要查看的信息类型 DWORD th32ProcessID //值0表示当前进程 ); BOOL WINAPI Process32First( HANDLE hSnapshot, //Cre 阅读全文
posted @ 2011-01-31 15:19
carekee
阅读(2358)
评论(0)
推荐(0)
浙公网安备 33010602011771号