本文目录一览

1,C语言输出最大值

else printf("%d",&ic); }有问题,输出的是ic的地址,把&去掉。

C语言输出最大值

2,c语言急

对于你的问题,对于一个老练的程序员估计也需要几天几夜的时间吧,呵呵
3,1

c语言急

3,有什么方式能够使得json解析的速度最快

使用TouchJSon解析方法:(需导入包:#import "TouchJson/JSON/CJSONDeserializer.h")[cpp] view plaincopy//使用TouchJson来解析北京的天气 - (IBAction)btnPressTouchJson:(id)sender //获取API接口 NSURL *url = [NSURL URLWithString:@ //定义一个NSError对象,用于捕获错误信息 NSError *error; NSString *jsonString = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&error]; NSLog(@"jsonString--->%@",jsonString); //将解析得到的内容存放字典中,编码格式为UTF8,防止取值的时候发生乱码 NSDictionary *rootDic = [[CJSONDeserializer deserializer] deserialize:[jsonString dataUsingEncoding:NSUTF8StringEncoding] error:&error]; //因为返回的Json文件有两层,去第二层内容放到字典中去 NSDictionary *weatherInfo = [rootDic objectForKey:@"weatherinfo"]; NSLog(@"weatherInfo--->%@",weatherInfo); //取值打印 txtView.text = [NSString stringWithFormat:@"今天是 %@ %@ %@ 的天气状况是:%@ %@ ",[weatherInfo objectForKey:@"date_y"],[weatherInfo objectForKey:@"week"],[weatherInfo objectForKey:@"city"], [weatherInfo objectForKey:@"weather1"], [weatherInfo objectForKey:@"temp1"]]; }

有什么方式能够使得json解析的速度最快

4,谈谈vc如何写dll封装性隐藏头文件私有成员

最近项目进行到一定阶段,老板要求把已完成部分分离开并把各模块封装成dll。用vs开发dll当然很简单,是用vs的向导可以很快写一个dll.但是我遇到了一些问题:刚开始只需要把各个模块的头文件和cpp加入到一个新的dll工程,然后又把导出类的成员函数和成员变量用到的结构体类型、类类型定义的头文件加进来,编译后dll就写出来了。问题是当我要使用这个dll时我就得把所有的相关头文件包含到引用dll的工程中。这样显然违背的我写dll的初衷。我认为我写dll的目的主要有两个:一是封装性。我不希望将我算法细节暴露给使用dll的人。因此我想把导出类引用的一些特殊类型(指的是除了简单类型之外的结构体或者类类型)的私有成员隐藏起来,这样就需要把那些头文件还有引用头文件的define语句也隐藏。二是易用性。把我这些dll给别人用时要让他们用起来很方便。如果不加修改的把现在的东西给他们用时需要他们先来熟悉这些特殊类型的定义,比如这些类型数据的初始化等等。而且我的dll引用到的头文件有好几个,而这些头文件又引用了其他头文件。也就是说如果直接提供一个dll我同时还用提供10多个头文件。在网上我查了很多地方,总结别人的经验,总算把自己的dll封装好了。 废话一大堆,现在说说我是怎么做的吧。 现在我有一个导出类BClass,他的成员函数的参数类型和私有成员变量类型都被很多其他头文件所定义,网上提供的一个解决办法是把头文件的define引用语句放到对应的cpp中,这当然是必须的,但是仅仅这样做我们在导出类中使用这些特殊类型的变量只能使用指针。这一点是和dll的特性有关的,原因在于dll只在运行时才被程序加载,在编译时我们无法知道cpp引用头文件里定义的类型。这样如果不使用指针类型变量,由于我们不知道那些类型的变量的大小,在编译时就会报错。所以我们必须把那些非指针型特殊变量改成指针类型。可是如果我们不想这样改的话呢?另外还有缺点就是这样仍然可以让别人知道我的导出类的完整结构,仍然可以略微知道dll开发者的一些细节,封装性仍然不够好。这样在我的导出类里面还要把一些成员函数和成员变量也给隐藏。容易解决的办法仍然有,把这些函数和变量都从导出类里面拿出来,放到cpp里面作为普通的全局变量和普通函数。这样也可以解决问题但是不是一个好办法,因为这样破坏了类结构(呵呵,曾经有同事直接告诉我不用导出类了,全部改成到处函数得了)。 问题的解决办法:现有的导出类结构什么都不用改,但是这个类不能作为导出类,在此类的基础上定义他的抽象基类,如IBClass。然后我们把IBClass作为导出类,并且只把我们希望导出的成员函数或者公有变量放在抽象基类里面,把这些函数都作为虚拟函数。那么新的dll我们怎么使用呢,现在只涉及到类的初始化问题以及析构问题。在这里我定义了一个工厂类用来初始化导出类。现在把过程写出来: 最初的BClass头文件:#include"CClass.h"#include"DClass.h"class __declspec(dllexport) BClass{func1(); // 这个我希望对dll使用者可见func2(CClass param1);//这个我不希望对使用者可见,包括CClass类型以及定义它的头文件CClass.hDClass param2;//这个我不希望对使用者可见,包括DClass类型以及定义它的头文件DClass.h} 因此我的做法是在此基础上添加头文件IBClass.h:class __declspec(dllexport) IBClass{virtual func1(); // 这个我希望对dll使用者可见} 然后我添加了BFactory.h头文件和BFactory.cpp文件BFactory.h:#include "IBClass.h"class BClass;class __declspec(dllexport) TrackerFactory{public:static IBClass *GetB();

5,高斯模型的具体介绍

  混合高斯模型:  运动检测的一般方法  目前,运动物体检测的问题主要分为两类,摄像机固定和摄像机运动。对于摄像机运动的运动物体检测问题,比较著名的解决方案是光流法,通过求解偏微分方程求的图像序列的光流场,从而预测摄像机的运动状态。对于摄像机固定的情形,当然也可以用光流法,但是由于光流法的复杂性,往往难以实时的计算,所以我采用高斯背景模型。因为,在摄像机固定的情况下,背景的变化是缓慢的,而且大都是光照,风等等的影响,通过对背景建模,对一幅给定图像分离前景和背景,一般来说,前景就是运动物体,从而达到运动物体检测的目的。  单分布高斯背景模型  单分布高斯背景模型认为,对一个背景图像,特定像素亮度的分布满足高斯分布,即对背景图像B,(x,y)点的亮度满足:   IB(x,y) ~ N(u,d)   这样我们的背景模型的每个象素属性包括两个参数:平均值u 和 方差d。   对于一幅给定的图像G,如果 Exp(-(IG(x,y)-u(x,y))^2/(2*d^2)) > T,认为(x,y)是背景点,反之是前景点。   同时,随着时间的变化,背景图像也会发生缓慢的变化,这时我们要不断更新每个象素点的参数   u(t+1,x,y) = a*u(t,x,y) + (1-a)*I(x,y)   这里,a称为更新参数,表示背景变化的速度,一般情况下,我们不更新d(实验中发现更不更新d,效果变化不大)。   高斯混合模型是用于背景提取的方法,OpenCV的cvaux中cvbgfg_gaussmix.cpp文件根据文献An improved adaptive background mixture model for real-time tracking with shadow中提供的方法编写了高斯混合模型函数。其中定义了CvGaussBGModel类用于存放高斯混合模型的各个参数。我用OpenCV使用高斯混合模型函数分以下几步:   1。需要用到icvUpdateGaussianBGModel,icvReleaseGaussianBGModel两个函数,但是源程序中将这两个函数定义为内部函数,需要做一些修改,首先将cvbgfg_gaussmix.cpp中前面两个函数的声明static void CV_CDECL icvReleaseGaussianBGModel( CvGaussBGModel** bg_model );   static int CV_CDECL icvUpdateGaussianBGModel( IplImage* curr_frame, CvGaussBGModel* bg_model );两行代码注释掉。然后在cvbgfg_gaussmix.cpp中间部分两个函数的定义部分,函数头static int和static void改成CV_IMPL int 和CV_IMPL void。最后在cvaux.h文件中CVAPI(CvBGStatModel*) cvCreateGaussianBGModel( IplImage* first_frame,   CvGaussBGStatModelParams* parameters CV_DEFAULT(NULL));这句后面加上以下两句CVAPI(void) icvReleaseGaussianBGModel( CvGaussBGModel** bg_model );   CVAPI(int) icvUpdateGaussianBGModel( IplImage* curr_frame, CvGaussBGModel* bg_model );   程序修改完毕,点rebuild all,全部重新编译。   2。在程序初始化部分定义高斯混合模型参数CvGaussBGModel* bg_model=NULL;在读取第一帧图像(背景图像)时,进行高斯背景建模bg_model = (CvGaussBGModel*)cvCreateGaussianBGModel(image, 0);image可以是灰度图象也可以是彩色图像。接下来再读取当前帧时,更新高斯模型   regioncount=icvUpdateGaussianBGModel(currframe, bg_model );regioncount的含义我不确定,我理解是代表背景中不同颜色区域的个数,这个参数我没有用到,它只是icvUpdateGaussianBGModel函数的返回值。   3。现在bg_model已经保存了经过高斯混合模型分类后的结果,bg_model->background保存了背景图像,bg_model->foreground保存了前景图像。   include   #include   #include   #include   #include //必须引此头文件   int main( int argc, char** argv )   {   IplImage* pFrame = NULL;   IplImage* pFrImg = NULL;   IplImage* pBkImg = NULL;   CvCapture* pCapture = NULL;   int nFrmNum = 0;   cvNamedWindow("video", 1);   cvNamedWindow("background",1);   cvNamedWindow("foreground",1);   cvMoveWindow("video", 30, 0);   cvMoveWindow("background", 360, 0);   cvMoveWindow("foreground", 690, 0);   if( argc > 2 )   {   fprintf(stderr, "Usage: bkgrd [video_file_name]\n");   return -1;   }   //打开视频文件   if(argc == 2)   if( !(pCapture = cvCaptureFromFile(argv[1])))   {   fprintf(stderr, "Can not open video file %s\n", argv[1]);   return -2;   }   //打开摄像头   if (argc == 1)   if( !(pCapture = cvCaptureFromCAM(-1)))   {   fprintf(stderr, "Can not open camera.\n");   return -2;   }   //初始化高斯混合模型参数   CvGaussBGModel* bg_model=NULL;   while(pFrame = cvQueryFrame( pCapture ))   {   nFrmNum++;   if(nFrmNum == 1)   {   pBkImg = cvCreateImage(cvSize(pFrame->width, pFrame->height), IPL_DEPTH_8U,3);   pFrImg = cvCreateImage(cvSize(pFrame->width, pFrame->height), IPL_DEPTH_8U,1);   //高斯背景建模,pFrame可以是多通道图像也可以是单通道图像   //cvCreateGaussianBGModel函数返回值为CvBGStatModel*,   //需要强制转换成CvGaussBGModel*   bg_model = (CvGaussBGModel*)cvCreateGaussianBGModel(pFrame, 0);   }   else   {   //更新高斯模型   cvUpdateBGStatModel(pFrame, (CvBGStatModel *)bg_model );   //pFrImg为前景图像,只能为单通道   //pBkImg为背景图像,可以为单通道或与pFrame通道数相同   cvCopy(bg_model->foreground,pFrImg,0);   cvCopy(bg_model->background,pBkImg,0);   //把图像正过来   pBkImg->origin=1;   pFrImg->origin=1;   cvShowImage("video", pFrame);   cvShowImage("background", pBkImg);   cvShowImage("foreground", pFrImg);   if( cvWaitKey(2) >= 0 )   break;   }   }   //释放高斯模型参数占用内存   cvReleaseBGStatModel((CvBGStatModel**)&bg_model);   cvDestroyWindow("video");   cvDestroyWindow("background");   cvDestroyWindow("foreground");   cvReleaseImage(&pFrImg);   cvReleaseImage(&pBkImg);   cvReleaseCapture(&pCapture);   return 0;   }
http://baike.baidu.com/view/4057769.htm
高斯过程(gps)是一种良好的贝叶斯分类方法和回归过程,也可应用于半监督聚类方面,就此提出了一个新的算法:使用稀疏高斯过程回归模型来解决半监督二元分类问题,它是基于支持向量回归(svr)和最大空间聚类(mmc)的半监督分类方法,此算法简...

文章TAG:cppibc语言  语言  输出  
下一篇