zoukankan      html  css  js  c++  java
  • 《学习opencv》笔记——矩阵和图像操作——cvAnd、cvAndS、cvAvg and cvAvgSdv


    矩阵和图像的操作


    (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

  • 相关阅读:
    (转载)李开复:我在硅谷看到的最前沿科技趋势
    1019. 数字黑洞 (20)
    1018. 锤子剪刀布 (20)
    1017. A除以B (20)
    1016. 部分A+B (15)
    1015. 德才论 (25)
    1013. 数素数 (20)
    1014. 福尔摩斯的约会 (20)
    1012. 数字分类 (20)
    1011. A+B和C (15)
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/9890295.html
Copyright © 2011-2022 走看看