zoukankan      html  css  js  c++  java
  • 《得知opencv》注意事项——矩阵和图像处理——cvOr,cvOrS,cvrReduce,cvRepeat,cvScale,cvSet and cvSetZero


    矩阵和图像的操作


    (1)cvOr函数

    其结构


    void cvOr(//两个矩阵相应元素做或执行
    	const CvArr* src1,//矩阵1
    	const CvArr* src2,//矩阵2
    	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("9.jpg");
    	src3 = cvLoadImage("7.jpg");
    
    	cvOr(src1,src2,src3);
    
    	cvShowImage( "測试1", src1);
    	cvShowImage( "測试2", src2);
    	cvShowImage( "測试3", src3);
    	cvWaitKey();
    	return 0;
    }

    输出结果




    (2)cvOrS函数

    其结构


    void cvOr(//矩阵与给定标量做或运算
    	const CvArr* src1,//矩阵1
    	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;
    	src1 = cvLoadImage("1.jpg");
    	src2 = cvLoadImage("7.jpg");
    
    	CvScalar cs;
    	cs.val[0] = 0;
    	cs.val[1] = 255;
    	cs.val[2] = 0;
    	cs.val[3] = 0;
    
    	cvOrS(src1,cs,src2);
    
    	cvShowImage( "測试1", src1);
    	cvShowImage( "測试2", src2);
    	cvWaitKey();
    	return 0;
    }

    输出结果




    (3)cvReduce函数

    其结构


    CvSize CvReduce(//完毕由op指定的约简
    	const CvArr* src,//目标矩阵
    	CvArr* dst,//结果矩阵
    	int dim = -1,//因子系数,//1合并成行,0合并成列。-1转化成相应的dis
    	int op = CV_REDUCE_SUM//指定约简法则
    );

    ps:当中的op代表的转换操作


    op的值 结果
    CV_REDUCE_SUM 计算全部向量的总和
    CV_REDUCE_AVG 计算全部向量的平均值
    CV_REDUCE_MAX 计算全部向量中的最大值
    CV_REDUCE_MIN 计算全部向量中的最小值

    实例代码


    #include <cv.h>
    #include <highgui.h>
    #include <stdio.h>
    #include <iostream>
    using namespace std;
    
    
    int main() 
    { 
    	double a[5][5] = 
    	{    
    		{1,0,0,0,6},
    		{0,2,0,7,0},
    		{0,0,3,0,0},
    		{0,9,0,4,0},
    		{8,0,0,0,5}
    	};
    
    	double b[5] = {0};
    	
    	CvMat va=cvMat(5,5, CV_64FC1,a);
    
    	CvMat vb=cvMat(5,1, CV_64FC1,b);
    
    	cout<<"目标矩阵:"<<endl;
    
    	for(int i=0;i<5;i++)
    	{
    		for(int j=0;j<5;j++)
    			printf("%f	",cvmGet(&va,i,j));
    		cout << endl;
    	}
    
    	cvReduce(&va,&vb,1,CV_REDUCE_SUM);
    
    	cout << "结果向量"<<endl;
    
    	for(int i=0;i<5;i++)
    	{
    			printf("%f	",cvmGet(&vb,i,0));
    		cout << endl;
    	}
    
    	getchar();
    	return 0;
    }

    输出结果




    (4)cvRepeat函数

    其结构


    void cvRepeat(//复制图像
    	const CvArr* src,//目标矩阵
    	CvArr* dst//结果矩阵
    );

    实例代码


    #include <cv.h>
    #include <highgui.h>
    #include <stdio.h>
    #include <iostream>
    using namespace std;
    
    
    int main() 
    { 
    	IplImage *src1, *src2,*src3;
    	src1 = cvLoadImage("1.jpg");
    	src2 = cvLoadImage("7.jpg");
    
    	cvRepeat(src1,src2);
    
    	cvShowImage( "測试1", src1);
    	cvShowImage( "測试2", src2);
    	cvWaitKey();
    	return 0;
    }

    输出结果




    (5)cvScale函数

    其结构


    void cvScale(//进行线性变换转换
    	const CvArr* src,//输入矩阵
    	CvArr* dst,//输出矩阵
    	double scale,//比例因子
    	double shift = 0.0//放缩比例
    );

    实例代码


    #include <cv.h>
    #include <highgui.h>
    #include <stdio.h>
    #include <iostream>
    using namespace std;
    
    
    int main() 
    { 
    	IplImage* src1 = cvLoadImage("1.jpg",CV_LOAD_IMAGE_GRAYSCALE);  
    
    	IplImage* src2 = cvCloneImage(src1);  
    
    	IplImage* dst = cvCreateImage(cvGetSize(src1),IPL_DEPTH_64F,src1->nChannels);  
    
    	double max_Val,min_Val;  
    	cvScale(src1,dst,1.0,0.0);  
    	cvAdd(dst,dst,dst);  
    
    	cvMinMaxLoc(dst, &min_Val, &max_Val, NULL, NULL, NULL);  
    
    	cvScale(dst,src2,1.0,0.0);  
    
    	cvScale(dst, dst, 1.0/(max_Val-min_Val), 1.0*(-min_Val)/(max_Val-min_Val));
    
    	cvMinMaxLoc(dst, &min_Val, &max_Val, NULL, NULL, NULL);  
    
    	cvShowImage("測试1",src1);  
    
    	cvShowImage("測试2",src2);  
    
    	cvShowImage("结果",dst);  
    
    	cvWaitKey(-1);  
    	return 0;
    }

    输出结果




    (6)cvSet函数

    其结构


    void cvSet(//对图像中的像素设置value
    	CvArr* arr,//目标矩阵
    	CvScalar value,//设置值
    	const,CvArr* mask = NULL//图像开关
    );

    实例代码


    #include <cv.h>
    #include <highgui.h>
    #include <stdio.h>
    
    int main() 
    { 
    	IplImage *src1, *src2;
    	src1 = cvLoadImage("1.jpg");
    	src2 = cvLoadImage("1.jpg");
    
    	CvScalar cs;
    	cs.val[0] = 0;
    	cs.val[1] = 0;
    	cs.val[2] = 255;
    	cs.val[3] = 0;
    	
    	cvSet(src1,cs);
    
    	cvShowImage( "结果图", src1);
    	cvShowImage( "原图", src2);
    	cvWaitKey();
    	return 0;
    }

    输出结果




    (7)cvSetZero函数

    其结构


    void cvSetZero(//对图像自己主动设置为零,相当于cvSet(0.0)
    	CvArr* arr,//目标矩阵
    );

    实例代码


    #include <cv.h>
    #include <highgui.h>
    #include <stdio.h>
    
    int main() 
    { 
    	IplImage *src1, *src2;
    	src1 = cvLoadImage("1.jpg");
    	src2 = cvLoadImage("1.jpg");
    
    	CvScalar cs;
    	cs.val[0] = 0;
    	cs.val[1] = 0;
    	cs.val[2] = 255;
    	cs.val[3] = 0;
    	
    	cvSetZero(src1);
    
    	cvShowImage( "结果图", src1);
    	cvShowImage( "原图", src2);
    	cvWaitKey();
    	return 0;
    }

    输出结果




    to be continued

    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    用机器学习来预测一个活动的总交易额值
    点击率模型的二三事
    git教程
    shell的查找与替换
    python中列表和元组以及字符串的操作
    自然语言处理第一课
    shell入门
    python基础知识
    SQL指令中一些特别值得注意的地方
    【python】json
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/4810035.html
Copyright © 2011-2022 走看看