自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

午后斜阳

无路可走便是最好的路!

  • 博客(106)
  • 资源 (2)
  • 问答 (1)
  • 收藏
  • 关注

转载 认识VTK工作原理

转载:http://blog.sina.com.cn/s/blog_63f6ddae010126de.htmlu 仅作学习用途VTK有两个子系统组成:一个是编译生成的C++类库,一个是通过Java、Tcl、Python语言来使用这些类的解释包。 VTT通过数据流实现变信息为图形数据的。数据流一般为:source—filter——mapper——actor——render——renderwindo

2016-04-13 00:21:40 2004

原创 Visual Assist X设置

Visual Assist X是一款非常好的Microsoft Visual Studio插件,可以支持Microsoft Visual Studio 2003,Microsoft Visual Studio 2005,Visual Studio 2008,Microsoft Visual Studio 2010,Microsoft Visual Studio 2013,Microsoft Visu

2016-04-11 20:32:32 2788

转载 入门QT4+VS2008-Gui设计

转载:http://blog.csdn.net/xgbingQT是跨平台的应用程序开发工具,闻名遐迩,下面使用VS2008结合QT开发一个应用程序。(1)打开VS2008,新建QT工程 (2)点击下一步,这里是选择需要使用的QT库 (3)点“下一步” “class name”:指定类的名称,这里写“qt_app”; “Base class”:指定自定义类的父类,这里选择“QMainWindo

2016-04-11 20:25:09 1491

原创 窗口的布局

布局,Layout,就是把各个控件放在合适的位置,占据适当大小的空间。 在Qt中,使用布局器QLayout进行布局;目标:生成如下格式的布局;具体代码://mywin.h#ifndef MYWIN_H#define MYWIN_H#include <QWidget>#include "ui_mywin.h"#include <QVBoxLayout>#include<QLineEdit>

2016-04-11 20:14:19 1073

转载 C++调用Python(基础)

转载:http://blog.csdn.net/magictong/article/details/8947892前言通过C++调用Python脚本主要要用到如下的一些Python提供的API,因为实际上C++要调用的是Python的解释器,而Python解释器本质就是实现在动态链接库里面的,因此在调用前和调用后要进行一些初始化和资源释放的工作,另外,要调用Python脚本里面的函数等等东西,需要P

2016-03-31 23:58:59 797

转载 C/C++ 调用 Python(实例)

Python 本身就是一个C库。你所看到的可执行体python只不过是个stub。真正的python实体在动态链接库里实现,在Windows平台上,这个文件位于 %SystemRoot%\System32\python27.dll。你也可以在自己的程序中调用Python,看起来非常容易://my_python.c#include <Python.h>int main(int argc, char

2016-03-31 23:33:54 624

转载 c++中调用python脚本提示 error LNK2001: 无法解析的外部符号

最近项目中需要实现一个服务器宕机后短信提醒的功能,个人觉得在使用python 写http请求这块很方便,发短信这块就使用了python,但是c++程序中调用这个脚本时,编译不通过,提示如下错误:error LNK2001: 无法解析的外部符号 __imp_PyString_FromString error LNK2001: 无法解析的外部符号 __imp_PyCallable_Check err

2016-03-31 22:06:09 1489

原创 开始运行、开始运行不调试区别

开始运行是指以调试模式执行,如果设置了断点,会运行到断点处暂停,方便程序员进行调试。开始运行不调试是指以执行模式运行,会完整执行编译生成的那个可执行文件,即使程序中设置了断点,也不会暂停,适合于运行程序直接观察最终运行效果。

2016-03-31 21:36:36 5547

转载 gcc、make、makefile、cmake、cmakelists区别

转自:http://www.zhihu.com/question/36609459 辉常哥1.gcc是GNU Compiler Collection(就是GNU编译器套件),也可以简单认为是编译器,它可以编译很多种编程语言(括C、C++、Objective-C、Fortran、Java等等)。2.当你的程序只有一个源文件时,直接就可以用gcc命令编译它。3.但是当你的程序包含很多个源文件时,用g

2016-03-31 21:03:51 8416 2

转载 Compile,Build/Link和Execute((编译、连接和运行))的联系与区别

转:http://www.dianzitx.com/mcu/clanguage/1883.html一个C程序的生成要经历以下步骤: 1.编写文本代码,生成C或Cpp文件,这时候它还是文本的; 2.编译,就是Compile,由C编译程序对你写的代码进行词法和句法分析,发现并报告错误,有错时编译不能通过。如若无错,则生成中间代码,扩展名为Obj,此时它便是二进制的了; 3.连接,在汇编里称Link,在C

2016-03-31 20:32:12 2985

原创 MITK用户指南(界面篇)

本文参考:MITK文档http://docs.mitk.org/nightly/index.html如果你想把MITK当作应用程序去使用,那么可以参考以下连接: http://docs.mitk.org/2015.05/UserManualPortal.html一、简介MITK (Medical Imaging Interaction Toolkit)是一个开源软件平台,可用来做交互式的医学图像处

2016-03-29 00:18:59 6572

转载 DICOM文件下载

转自:http://blog.csdn.net/yunzhaoqiang/article/details/26005009http://www.osirix-viewer.com/datasets/ 多序列DICOM文件,可用于测试三维渲染http://www.aycan.de/lp/sample-dicom-images.html 列举了一些可下载DICOM文件的链接http://ww

2016-03-25 16:27:29 8286

转载 简单介绍图像分割的方法

基于边缘检测的方法 基于边缘检测的方法主要是通过检测出区域的边缘来进行分割,利用区域之间特征的不一致性,首先检测图像中的边缘点,然后按一定策略连接成闭合的曲线,从而构成分割区域。图像中的边缘通常是灰度、颜色或纹理等性质不连续的地方。对于边缘的检测,经常需要借助边缘检测算子来进行,其中常用的边缘检测算子包括[3]:Roberts 算子、Laplace 算子、Prewitt 算子、Sobel 算子、R

2016-01-12 14:48:22 3751

原创 Shi-Tomasi角点检测

一、算法基本原理和步骤(1)原理 shi-Tomasi 算法是Harris 算法的改进。Harris 算法最原始的定义是将矩阵 M 的行列式值与 M 的迹相减,再将差值同预先给定的阈值进行比较。后来Shi 和Tomasi 提出改进的方法,若两个特征值中较小的一个大于最小阈值,则会得到强角点。(2)算法步骤 二、代码实现(1)goodFeatureTrack()函数原型:void goodFeat

2015-10-13 18:54:25 5749 1

原创 使用swap技巧除去多余的容量

一、为了避免vector占用不再需要的内存,需要有一种方法把它的容量(capacity)缩减到当前需要的数量。方法就是:vector<ElemType>(v).swap(v);vector(v)创建一个临时变量,它是v的一个拷贝。vector的拷贝构造函数只为所拷贝的元素分配所需要的内存,所以这个临时变量不会有多余的容量。然后将这个临时变量与v做swap操作,在这之后v就具有了被去除之后的容量,即

2015-10-13 14:15:21 670

原创 慎重选择删除元素的方法

一、要删除容器中中有特定值的所有对象:(1)如果容器是vector、string或deque,则使用erase-remove习惯用法:c.erase(remove(c.begin(),c.end(),1963),c.end());(2)如果容器是list,则使用list::remove,此时remove是其成员函数:c.remove(1963);(3)如果容器是一个标准关联容器,则使用它的eras

2015-10-13 13:46:38 493

原创 使用reserve来避免不必要的重新分配

(1)分配内存步骤关于STL,它们会自动增长以便容纳下你放入的数据,只要没有超出它们的最大限制就可以。对于vector和string,如果需要更多空间,就以类似realloc的思想来增长大小。这个类似于realloc的操作有四个部分:**1. 分配新的内存块,分配的大小一般为当前容器内存的倍数。在大部分实现中,vector和string的容量每次以2的倍数为增长。即,当容器必须扩展时,它们

2015-10-12 10:28:17 1052

原创 vector和string优先于动态数组的分配

vector和string优先于动态数组的分配

2015-10-12 10:08:38 358

原创 用empty()来代替检查size()是否为空

对于任意容器c,if (c.size() == 0)...本质上等价于if (c.empty())...这就是例子。你可能会奇怪为什么一个构造会比另一个好,特别是事实上empty()的典型实现是一个返回size()是否返回0的内联函数。你应该首选empty()的构造,而且理由很简单:对于所有的标准容器,empty()是一个常数时间的操作,但对于一些list实现,size()花费线性时间。不管发生了

2015-10-12 09:58:04 1327

原创 不要试图编写独立于容器类型的代码

如果你想编写对大多数的容器都适用的代码,你只能使用它们的功能的交集。不同的容器是不同的,它们有非常明显的优缺点。它们并不是被设计用来交换使用的。

2015-10-12 09:53:11 372

原创 慎重选择容器类型

一、容器分类(1)标准的STL序列容器vector、string、deque和list。(2) 标准的STL关联容器set、multiset、map和multimap(3)非标准序列容器slist和rope。(4)非标准的关联容器hash_set、hash_multiset、hash_map和hash_multimap。(5)几种标准的非STL容器数组、bitset、valarray、stack、q

2015-10-12 09:50:40 373

转载 MFC运行框架

转自:http://www.cnblogs.com/lidabo/archive/2012/10/23/2735622.html1、创建Application object对象theApp程序一开始生产一个(且只有一个)Application object对象theApp,也即一个CWinApp对象,这个全局对象一产生,便执行其构造函数,因为并没有定义CMyWinApp构造函数,所以即执行CWinA

2015-10-10 17:05:10 342

原创 windows程序内部运行原理

一、windows程序消息处理机制 二、创建win32应用程序过程编写WinMain函数设计窗口类注册窗口类创建窗口类显示和更新窗口类编写消息循环编写窗口过程函数三、实现#include <windows.h>#include <stdio.h>//声明回调函数LRESULT CALLBACK WinSunProc( HWND hwnd, // handle to

2015-10-07 21:41:20 417

原创 chan-vese模型

一、文章参考Chan T F, Vese L. Active contours without edges[J]. Image processing, IEEE transactions on, 2001, 10(2): 266-277.二、公式推导过程

2015-10-06 11:16:05 11725 3

转载 图像处理顶级期刊

转自:http://blog.sina.com.cn/s/blog_7dc8863f0100ref1.htmlIEEE Transaction on image processingIEEE Transaction on pattern analysis and machine intelligenceIEEE Transaction on medical imagingIEEE Transa

2015-09-24 17:31:00 2721

转载 了解typename的双重意义(Effective C++_42)

注:转自http://blog.chinaunix.net/uid-26548237-id-3871044.html仅作学习用途当我们声明template类型参数,class和typename的意义完全相同。在C++的角度来看,声明template参数时,不论使用关键字class或typename,意义完全相同。template<class T> class Widget; //使用"clas

2015-09-15 17:57:14 355

转载 了解隐式接口和编译期的多态(Effective C++_41)

注:转自http://www.cnblogs.com/jerry19880126/p/3620004.html仅作学习用途一、隐式接口隐式接口是相对于函数签名所代码的显式接口而言的。当我们看到一个函数签名(即函数声明),比如说: string GetNameByStudentID(int StudentID); 我们就知道这个函数有一个整型的形参,返回值是string。但隐式接口是由有效表达式组成的

2015-09-15 17:44:02 345

转载 绝不要重新定义继承而来的缺省参数值(Effective C++_37)

一、考虑以下代码 代码来源:http://blog.csdn.net/cadcisdhht/article/details/6233170class A{public: virtual void Fun(int number = 10) { std::cout << "A::Fun with number " << number; }};class B:pub

2015-09-15 15:37:47 331

转载 策略模式

一、基本原理 策略模式和 Template 模式要解决的问题是相同(类似)的,都是为了给业务逻辑(算法)具体实现和抽象接口之间的解耦。策略模式将逻辑(算法)封装到一个类(Context)里面,通过组合的方式将具体算法的实现在组合对象中实现,再通过委托的方式将抽象接口的实现委托给组合对象实现。二、基本模式 关键就是将逻辑抽象接口(DoAction)封装到一个类中(Context),再通过委托的方式

2015-09-15 14:59:59 336

原创 绝对不要重新定义继承而来的non-virtual函数(Effective C++_36)

一、对于非虚函数同一个对象调用同一个函数,可能产生了不同的行为class B{public: void mf(){ cout<<"B"<<endl; }};class D:public B{};int main(){ D x; B* pb=&x;//获得一个B类型的指针指向x pb->mf(); D* pD=&x;//获得一个D类型

2015-09-15 10:41:41 752

原创 指针概念

指针小知识回顾 int i, j; //定义整型变量i,j int *pointer_1, *pointer_2; //定义指针变量第2行开头的int是指:所定义的指针变量是指向整型数据的指针变量。也就是说,指针变量pointer_1和pointer_2只能用来指向整型数据(例如i和j),而不能指向浮点型变量a和b。这个int

2015-09-15 10:15:11 332

原创 考虑virtual函数以外的其他选择(Effective C++_35)

一、NVI手法实现模版方法模式(1)NVI手法的基本思想该设计是令客户通过public non-virtual成员函数间接调用private virtual函数,称为non-virtual interface(NVI)手法,它是模板方法设计模式的一个独特表示;相当对virtual函数进行一层的包装,可以称为是virtual函数的外覆器(warpper).注:模板方法设计模式,主要思想是基类提供抽象接

2015-09-15 09:22:35 380

原创 模板方法模式(Template Method)

模板方法模式基本思想对于某一个具体事务在不同的对象中有不同的细节实现,但是逻辑(算法)的框架(或通用的应用算法)是相同的。

2015-09-14 20:32:56 424

转载 区分接口继承和实现继承(Effective C++_34)

一、所谓接口继承,就是派生类只继承函数的接口,也就是声明;而实现继承,就是派生类同时继承函数的接口和实现。二、虚函数、纯虚函数、非虚函数。(1)虚函数: 虚函数是指一个类中你希望重载的成员函数,当你用一个基类指针或引用指向一个继承类对象的时候,你调用一个虚函数,实际调用的是继承类的版本。——MSDN 虚函数用来表现基类和派生类的成员函数之间的一种关系. 虚函数的定义在基类中进行,在需要定义为

2015-09-14 19:40:42 426

原创 避免遮掩继承而来的名称(Effective C++_33)

一、名字覆盖规则名称的遮掩可以分成变量的遮掩与函数的遮掩两类;查找规则:一般先查找局部作用域,然后再查找外围作用域;对于含有继承关系的类,先查找局部作用域,再查找派生类覆盖的作用域,然后再查找基类覆盖的作用域,如果都没有找到,最后查找全局作用域;二、基类成员函数被覆盖 (1)看一段代码:#include <iostream>using namespace std;class Base{pri

2015-09-14 19:25:35 443

原创 Harris角点检测

一、Harris检测原理 参见另外一篇博,是用matlab实现的客:http://blog.csdn.net/zhangchen1003/article/details/48162687二、opencv代码实现#include<opencv2\core\core.hpp>#include<opencv2\imgproc\imgproc.hpp>#include<opencv2\highgui\

2015-09-14 13:21:09 382

原创 确定public继承出来的是Is_a关系(Effective C++_32)

(1)谨记:public继承意味着“is_a”的关系,假如class D:public B,那么可以说每一个D的对象同时也是每一个B的对象,但是反之不成立,比如,学生是人,但并非所有人都是学生 (2)public继承主张,能够适用于基类身上的每一件事情也一定适用于派生类身上,因为每一个派生类对象也都是一个基类对象 (3)注意区分is_a,has_a(见条款38),i_implemented-in

2015-09-08 17:33:02 475

转载 了解inline函数(Effective_C++(30))

1.类似于C中的#define  在C++中,提供了inline函数来代替C中的宏定义。(通常可以使用const来代替单纯变量的宏定义,它可以提供类型检查。对于形似函数的宏,最好改用inline函数来替换宏定义。)  编译器最优化机制通常被设计用来浓缩那些“不含函数调用“的代码,所以当你inline某个函数时,或许编译器就因此有能力对它执行语境相关最优化。2.效率问题  inline函数同#defi

2015-09-08 14:55:14 301

原创 尽可能延后变量定义式的出现时间(Effective_C++(26))

一、定义一个对象,往往意味着必须承担构造成本,离开作用域,必须承担析构成本。即使这个对象没有使用过。二、你可能会认为,不会定义一个不使用的对象。考虑下面的情况下,定义一个对象,执行其他操作,然后使用对象,假如在执行其他操作的时候,出现异常,就导致构造和析构了一个没有使用的对象: std::string encryptPassword(const std::string& password){

2015-09-08 13:59:18 289

原创 若所有参数需类型转换,采用non-member函数(Effective_C++(24))

一、考虑下面问题设计一个class表示有理数,它应该支持隐式类型转换,虽然我们说支持隐式类型转换通常是个不好的主意。这是为了我们设计的类可以和内置类型进行运算。例如和整型:class Rational { pbulic: Rational(int numerator = 0, int denominator = 1); //注意这个构造函数不为explicit int numerator(

2015-09-08 13:29:58 379

Harris角点检测原理与流程

详细介绍了harris角点检测的原理和流程,并给出了原理的证明

2015-09-01

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除