• 欢迎浏览“String me = Creater\忠实的资深Linux玩家;”,请文明浏览,理性发言,有侵犯你的权益请邮件我(creater@vip.qq.com).
  • 把任何的失败都当作一次尝试,不要自卑;把所有的成功都想成是一种幸运,不要自傲。
  •    4年前 (2014-10-02)  OpenCv |   抢沙发  19 
    文章评分 0 次,平均分 0.0

    cvAvgSdv用于计算均值与均方差,用C语言实现该算法如下:

    IplImage *dst = cvCreateImage(cvGetSize(pm),IPL_DEPTH_64F,1);
    	cvConvert(pm, dst);
    	cout<<"行:"<<dst->height<<"   列:"<<dst->width<<"  step: "<<dst->widthStep<<endl;
    	double *imgData  = 0;
    	for(int i=0;i<dst->height;i++)
    	{
    		imgData=(double*)(dst->imageData +i*dst->widthStep);
    		for(int j=0;j<dst->width;j++)
    		{
    			printf("%3.1f ", *(imgData +j));
    		}
    		printf("\n");
    	}
    	CvScalar mean;
    	CvScalar dev;
    	cvAvgSdv(dst,&mean,&dev,NULL);//计算图像的均值和标准差
    	cout<<"均值:"<<mean.val[0]<<"方差:"<<dev.val[0]<<endl;
    	double meanVal = 0, std_dev = 0;
    	for(int i=0;i<dst->height;i++)
    	{
    		imgData=(double*)(dst->imageData +i*dst->widthStep);
    		for(int j=0;j<dst->width;j++)
    		{
    			meanVal += (*(imgData +j));
    			std_dev +=(*(imgData +j)) * (*(imgData +j));
    		}
    	}
    	meanVal /= (dst->height * dst->width);
    	std_dev /=(dst->height * dst->width);
    	std_dev = sqrt(std_dev - meanVal *meanVal);
    	cout<<"均值:"<<meanVal<<"方差:"<<std_dev<<endl;
    	cvReleaseData(pm);
    	cvReleaseMat(&pm);
     

    除特别注明外,本站所有文章均为String me = "Creater\忠实的资深Linux玩家";原创,转载请注明出处来自http://unix8.net/home.php/3746.html

    关于

    发表评论

    暂无评论

    切换注册

    登录

    忘记密码 ?

    切换登录

    注册

    扫一扫二维码分享