2011年1月31日
摘要: 不知道从什么时候开始,switch-case语句成了代码坏味道的代名词,写代码的时候小心翼翼地避开它,看到别人代码中的switch-case就皱眉头,想想其实大可不必这样,switch-case语句并不是代码坏味道的根源,坏味道来自糟糕的代码(结构)设计,比如过多的switch-case分支,或者多重switch-case嵌套等等,这些都将导致代码可读性下降,如果再加上代码风格较差,代码不对齐,那么坏味道就相当地大了。 简短的switch-case还是继续用吧,但是对于分支太多的长switch-case最好能想办法化解开,那么什么算长什么算短呢?我也不知道,就以在最低分辨率的显示器上能够在一个 阅读全文
posted @ 2011-01-31 15:55 carekee 阅读(1082) 评论(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 阅读(2192) 评论(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 阅读(397) 评论(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 阅读(1243) 评论(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 阅读(691) 评论(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 阅读(1183) 评论(0) 推荐(0)
摘要: histeq是用来增强对比度的,只能用在黑白图像上,也就是二维数组,你读取进来的图像肯定不是黑白的,彩色图像是三维的,例如读取一个256x256的彩色图像,生成的数组的大小事256x256x3,是三维的,而如果是黑白图像,就是256x256,是二维的。你可以用rgb2gray这个函数将彩色图像转换成黑白图像,代码可以这么写:i1=imread('lena.bmp');[m,n,p] = size(... 阅读全文
posted @ 2011-01-31 15:45 carekee 阅读(7860) 评论(0) 推荐(2)
摘要: 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 阅读(570) 评论(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 阅读(3030) 评论(0) 推荐(0)
摘要: 根据帮助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 阅读(1135) 评论(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 阅读(5363) 评论(0) 推荐(0)
摘要: 概括的说,指针其实就是可变数组的首地址,说是可变数组,是 指其包含内容的数量的可变的,并且是可动态申请和释放的,从而充 分节约宝贵的内存资源。我一向喜欢一维数组,除非万不得已,我一 般是不用二维数组的,多维的则更是很少涉足了。因为一维简单,容 易理解,而用指针指向的多维数组就具有相当的复杂性了,也因此更 具有讨论的必要。 闲话少说,这里我就以三个二维数组的比较来展开讨论: (1)、int **Ptr; (2)、int *Ptr[ 5 ]; (3)、int ( *Ptr )[ 5 ]; 以上三例都是整数的二维数组,都可以用形如 Ptr[ 1 ][ 1 ] 的 方式访问其内容;但它们的差 阅读全文
posted @ 2011-01-31 15:41 carekee 阅读(37011) 评论(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 阅读(2152) 评论(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 阅读(575) 评论(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 阅读(3489) 评论(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 阅读(1287) 评论(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 阅读(562) 评论(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 阅读(1460) 评论(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 阅读(1492) 评论(0) 推荐(0)