您的位置:首页 > 运维架构

《学习opencv》笔记——矩阵和图像操作——cvAnd、cvAndS、cvAvg and cvAvgSdv

2014-05-28 15:22 483 查看
矩阵和图像的操作

(1)cvAnd函数

其结构

void cvAnd(  //将src1和src2按像素点取“位与运算”
const CvArr* src1,//第一个矩阵
const CvArr* src2,//第二个矩阵
CvArr* dst,//结果矩阵
const CvArr* mask = NULL;//矩阵经行像素点与的“开关”
);


程序实例

#include <cv.h>
#include <highgui.h>
#include <stdio.h>

int main(int argc, char** argv)
{
IplImage *src1, *src2,*src3;
src1=cvLoadImage("1.jpg");
src2=cvLoadImage("3.jpg");
src3=cvLoadImage("4.jpg");

cvAnd(src1,src2,src3);
cvShowImage( "测试1", src1);
cvShowImage( "测试2", src2);
cvShowImage( "测试3", src3);
cvWaitKey();
return 0;
}


输出结果



(2)cvAndS函数
其结构

void cvAndS(//使src1与value进行 位与运算
const CvArr* src1,//第一个矩阵
CvScalar value,//运算标量
CvArr* dst,//结果矩阵
const CvArr* mask = NULL;//运算开关
);

实例程序

#include <cv.h>
#include <highgui.h>
#include <stdio.h>

int main(int argc, char** argv)
{
IplImage *src1, *src2,*src3;
src1=cvLoadImage("1.jpg");
src2=cvLoadImage("5.jpg");

CvScalar cs;
cs.val[1] = 100.0;
cs.val[2] = 100.0;
cs.val[0] = 100.0;
cs.val[3] = 100.0;
cvAndS(src1,cs,src1);
cvShowImage( "测试1", src1);
cvShowImage( "测试2", src2);

cvWaitKey();
return 0;
}

输出结果



(3)cvAvg函数
其结构

CvScalar cvAvg(//求出src的平均像素值
const CvArr* src,//目标矩阵
const CvArr* mark = NULL//像素开关
);

实例代码:我对上面那个机器猫的图像使用

#include <cv.h>
#include <highgui.h>
#include <iostream>
#include <stdio.h>
using namespace std;

int main(int argc, char** argv)
{
IplImage *src1;
src1=cvLoadImage("1.jpg");

CvScalar cs;

cs = cvAvg(src1);

cout<<cs.val[0] << endl;
cout<<cs.val[1] << endl;
cout<<cs.val[2] << endl;
cout<<cs.val[3] << endl;

getchar();
return 0;
}

输出结果



(4)cvAvgSdv函数
其结构

CvScalar cvAvg(//求像素平均值和标准差
const CvArr* arr,//目标矩阵
CvScalar* mean,//平均值
CvScalar* std_dev,//标准差
const CvArr* mark = NULL//像素开关
);

程序实例:依然用的机器猫图片

#include <cv.h>
#include <highgui.h>
#include <iostream>
#include <stdio.h>
using namespace std;

int main(int argc, char** argv)
{
IplImage *src1;
src1=cvLoadImage("1.jpg");

CvScalar cs,cs1;

cvAvgSdv(src1,&cs,&cs1);

cout<<"平均值:"<<endl;
cout<<cs.val[0] << endl;
cout<<cs.val[1] << endl;
cout<<cs.val[2] << endl;
cout<<cs.val[3] << endl;
cout <<endl;
cout <<"标准差"<<endl;
cout<<cs1.val[0] << endl;
cout<<cs1.val[1] << endl;
cout<<cs1.val[2] << endl;
cout<<cs1.val[3] << endl;

getchar();
return 0;
}


输出结果



to be continued
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐