加载中…
个人资料
dfxhvj
dfxhvj 新浪个人认证
  • 博客等级:
  • 博客积分:0
  • 博客访问:445,653
  • 关注人气:106
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
博文
标签:

模板类

dll

导出

编译链接错误

it

分类: 探险者协会

假设我们有一个模板类如下:

template< class T >

class CArray

{

public:

    CArray();

private:

    T *m_pData;

}

 

template< class T >

CArray< T >::CArray() { m_pData = NULL; }

 

    如果在dll中包含了该模板类,要是不导出的话,当别的dll工程使用该模版类作为成员变量时,编译就会出现出现警告,提示该模板类没有导出供客户端程序使用。如果按通常的dll接口导出方式导出:

#ifndef ALGORITHM_EXPORTS
  #define ALGORITHM_CLASS __declspec(dllimport)
#else //EXPORT
  #define ALGORITHM_CLASS __declspec(dllexport)

#endif

 

template< class T >

class ALGORITHM_CLASS CArray

{

public:

    CArray();

private:

    T *m_pData;

}

 

template< class T >

CArray&l

标签:

svm

支持向量机

拉格朗日

对偶问题

不等式条件极值

凸规划

模式识别

分类: 无尽之海

    支持向量机的原理很简单,就是VC维理论和最小化结构风险。在阅读相关论文的时候,发现很多文章都语焉不详,就连《A Tutorial on Support Vector Machines for Pattern Recognition》这篇文章对拉格朗日条件极值问题的对偶变换都只是一笔带过,让很多人觉得很困惑。下面我将就SVM对线性可分的情况作详尽的推导。

   


   上图所

标签:

基本矩阵

内点

opencv

ransac

it

分类: 无尽之海

    在新版的OpenCV中,很多C代码都被重新封装成了C++代码,相应的其调用接口也发生了改变,而文档中的叙述也越来越不清楚,往往导致使用过程中出现各种问题。

    在处理立体图像对的时候经常会用到对极几何的知识,计算基础矩阵也是很常见的事。OpenCV实现了基本矩阵的算法。对于老版本的C代码,计算基本矩阵的RANSAC方法中有一个迭代次数不收敛的bug,可能导致每次计算的采样次数都达到最大限制的次数,其根源在于计算采样可信度的公式有误,新版本的代码还没有仔细看过,不敢确定是否已经修正了这个bug。但是这个bug并不会对最后的结果造成多大影响,只是会影响计算的效率——原本几次采样即可结束迭代,在这个bug的影响下可能要采样数百次。

    新版本的计算基本矩阵的函数的使用也有一些问题,下面来看看cv::findFundamentalMat函数:

//! the algorithm for finding fundamental matrix
enum
{
    FM_7POINT = CV_FM_7POINT, //!< 7-point algorithm
    FM_8POINT = CV_FM_8POINT, //!< 8-point algorithm
  &

标签:

图像

特征提取

特征匹配

设计模式

多态

opencv

it

分类: 无尽之海

    OpenCV在新版本中把很多C语言的代码都重新整理成了C++代码,让我们在使用的时候更加方便灵活。其中对于特征点的提取和匹配,充分体现了C++的强大。下面直接用例子来说明。假设我们有两幅图:1.bmp和2.bmp,要从中提取体征点并匹配,代码如下:

 

// Load image from file

IplImage *pLeftImage = cvLoadImage('1.bmp', CV_LOAD_IMAGE_GRAYSCALE);
IplImage *pRightImage = cvLoadImage('2.bmp', CV_LOAD_IMAGE_GRAYSCALE);

 

// Convert IplImage to cv::Mat

Mat matLeftImage = Mat(pLeftImage, false); // Do not copy
Mat matRightImage = Mat(pRightImage, false);

 

// Key point and its descriptor

vector<KeyPoint> LeftKey;
vector<KeyPoint> RightKey;

Mat LeftDescriptor;
Mat RightDescriptor;

vector<DMatch> Matches;

 

// Detect key points from image

FeatureDetector *pDetector = new SurfFeatureDetector; // 这里我们用了SURF特征点
pDetector-&g

标签:

成员函数指针

函数指针

外部函数

友元函数

this指针

c

it

分类: 无尽之海

将一个类成员函数的函数指针传递给另一个成员函数是比较简单的,只要定义一个函数指针就可以轻松实现。示例如下:

#include <iostream>
using namespace std;

class test
{
public:
 typedef void (test::*pFUN)();
 void func1()
 {
  func2(&test::func3); //把func3的指针传递给func2
 }
 void func2(pFUN pfun)
 {
  (this->*pfun)();
 }
 void func3()
 {
  cout<<'test func3.'<<endl;
 }
};

main()
{
 void (test::*pfun)() = &test::func3; //把func3的指针赋给pfun

 test my_test;
 my_test.func1();
 my_test.func2(pfun); //把pfun传递给func2
 cin.get();
}

输出结果为:
test func3.
test func3.

但是,如果直接把类成员函数的函数指针作为参数传递给一个外部的普通函数(__cdecl),比如把上面的test类的f

标签:

组合数

快速计算

ln

阶乘

对数

大数量级

it

分类: 探险者协会

    计算组合数最大的困难在于数据的溢出,对于大于150的整数n求阶乘很容易超出double类型的范围,那么当C(n,m)中的n=200时,直接用组合公式计算基本就无望了。另外一个难点就是效率。

    对于第一个数据溢出的问题,可以这样解决。因为组合数公式为:

    C(n,m) = n!/(m!(n-m)!)

为了避免直接计算n的阶乘,对公式两边取对数,于是得到:

    ln(C(n,m)) = ln(n!)-ln(m!)-ln((n-m)!)

进一步化简得到:

   

这样我们就把连乘转换为了连加,因为ln(n)总是很小的,所以上式很难出现数据溢出。

    为了解决第二个效率的问题,我们对上式再做一步化简。上式已经把连乘法变成了求和的线性运算,也就是说,上式已经极大地

(2007-08-20 10:35)
标签:

游戏部落

分类: 泰兰德的记忆
1 掠食者
-简介:掠食者,4个脚的虫子。兼备较高的攻击和护甲。很多猎人带它练级,是个不错的宠物。
-可以学习的技能:撕咬、角刺和突进。
-分布地点:地狱火半岛有三个分布点,一是通往泰洛卡森林的荆棘路上,这里的等级较低,自带突进(等级3),不建议抓这里的。一是猎鹰岗哨西边的尘羽峡谷,这里的虫子会撕咬(等级8)和角刺(等级8),抓这里的虫子比较合适,不过最低等级是62级。一是通往赞加沼泽的路上,这里的虫子等级较高。刀锋山有一个分布点,就在联盟的营地外面,这里的虫子会角刺(等级9)和突进(等级3)。
 
2 跃迁兽
分类: 巫师圣殿
要杀奥兹恩需要先杀掉刺踢,因为可以撞开艾德雷斯神殿大门的大树被刺踢缠绕在了温室里。杀掉刺踢之后,进温室和大树对话,大树会帮你打开神殿大门,然后就可以去杀奥兹恩了。
从温室进神殿有两种方法,一是从中间的石板路上过去,一是沿着墙绕过去。如图:
A是通水元素房间的门,B是通往神殿的门,C和D是两个精英花。
一、走中间大路:温室有N组巡逻的树人,把握好时机小心避过巡逻可以很容易进入神殿。
二、贴墙走:先招胖子(或者奴役一个恶魔),贴下边的墙走到C处,放逐C花,然后用宝宝顶D花,自己向B点大门跑,进去之后跑出过道,过道口有台阶,跳上台阶等脱离战斗即可。
 
艾德雷斯神殿地图如下:
(2006-11-27 12:25)
分类: 泰兰德的记忆
在西部荒野的海岸边杀鱼人可能掉一张“杉德尔船长的藏宝图”,可以触发一个任务——杉德尔船长的宝藏。任务的第一步是让你在海岸上寻找到杉德尔船长的手提箱,这个手提箱遗失在一艘沉没的船边上。也就是下图标注的“1”的位置。
 
 
在1处找到手提箱后,会得到新的提示,让你一直向东走到2处。
 
 
在2处你会看见一个废弃的烟囱,烟囱在农场的边上。在烟囱边上有一个桶,打开之后会得到下一步提示
分类: 巫师圣殿
摘自新浪游戏网。
 
以下是黑莲花在四个地图上的分布图,每个地图一般一小时在其中的一个点刷一个黑莲花。
 
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有