OpenCV的数据类型---Cv
CvScalar就是一个包含四个元素的结构体变量。
CvScalar定义可存放1—4个数值的数值,其结构如下。
typedef struct CvScalar
{
double val[4];
}
CvScalar;
------------------------------------------------
CvScalar pt;
如果使用的图像是1通道的,则pt.val[0]中存储数据
如果使用的图像是3通道的,则pt.val[0],pt.val[1],pt.val[2]中存储数据
实现每幅图像的每一个通道求均值和方差。
//这里是三通道的图像
for(i=0;i<3;i++) //求均值
{
m[i]=0;
for(x=0;x<src->height;x++)
{
uchar *ptr=(uchar*)(src->imageData+x*src->widthStep);//每一行的起点wisthstep是以字节为单位的
for(y=0;y<src->width;y++)
{
m[i]+=ptr[3*y+i];
}
}
m[i]/=npixs;
}
for(i=0;i<3;i++) //求标准差
{
d[i]=0;
for(x=0;x<src->height;x++)
{
uchar *ptr=(uchar*)(src->imageData+x*src->widthStep);
for(y=0;y<src->width;y++)
{
d[i]+=(ptr[3*y+i]-m[i])*(ptr[3*y+i]-m[i]);
}
}
d[i]/=npixs;
d[i]=sqrt(d[i]);
}
其实在opencv中有现成的函数可以计算平均值和标准差
CvScalar cvAvg(const CvArr* arr,constCvArr* mask =NULL);//计算mask非零位置的所有元素的平均值,如果是图片,则单独计算每个通道上的平均值,如果COI设置了,只计算该COI通道的平均值。对于多通道的图像可以通过设置COI实现求单独通道的平均值。
void cvAvgSdv(const CvArr* arr, CvScalar* mean, CvScalar* std_dev,const CvArr* mask=NULL);//计算各通道的平均值,标准差,支持COI 该函数可以同时实现求均值和方差。
最新文章
- 小丁带你走进git世界五-远程仓库
- AfxMessageBox和MessageBox区别
- 产品需求文档(PRD)的写作方法之笔记一
- 计算几何 平面最近点对 nlogn分治算法 求平面中距离最近的两点
- BZOJ3563 : DZY Loves Chinese
- MFC的简单加法器(二)
- ICANN认证企业列表
- js基础笔记
- 解决android.os.NetworkOnMainThreadException
- 转:ORACLE制造方法的比较
- Day 2 @ RSA Conference Asia Pacific & Japan 2016
- 萧墙HTML5手机发展之路(51)——jquerymobile在提高页面访问速度
- 2017年最好的JavaScript库
- 利用Eclipse中的Maven构建Web项目报错(一)
- 富文本编辑器 kindeditor
- HTML笔记(适合新手入门)
- Linux 文件系统结构、磁盘的管理
- Beta阶段第五篇Scrum冲刺博客-Day4
- 利用HTML5定位功能,实现在百度地图上定位(转)
- 2018.09.14 codechef Milestone(随机化算法)
热门文章
- linux标准io的copy
- git命令大全
- kindeditor本地上传报错,只限初学者
- 事件的委托处理 javascript
- 最近这两天看了关于H5游戏开发的一个教程,实践很短暂,看了很多理论的东西,现在呢也只是想回忆回忆关于EUI的部分知识吧
- JavaScript 立即执行函数
- 转载《SimpleAdapter的参数说明》
- javascript函数一共可分为五类: &#183;常规函数 &#183;数组函数 &#183;日期函数 &#183;数学函数 &#183;字符串函数
- Git 基础
- 字符串hash算法