• [转]《学习opencv》笔记——矩阵和图像操作——cvOr,cvOrS,cvrReduce,cvRepeat,cvScale,cvSet and cvSetZero


     

    原文地址:http://blog.csdn.net/zhurui_idea/article/details/28878011

     

    矩阵和图像的操作

     
    (1)cvOr函数

    其结构

    [cpp] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. void cvOr(//两个矩阵对应元素做或运行  
    2.     const CvArr* src1,//矩阵1  
    3.     const CvArr* src2,//矩阵2  
    4.     CvArr* dst,//结果矩阵  
    5.     const CvArr* mask = NULL//矩阵“开关”  
    6. );  

    实例代码
    [cpp] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. #include <cv.h>  
    2. #include <highgui.h>  
    3. #include <stdio.h>  
    4.   
    5. int main(int argc, char** argv)  
    6. {  
    7.     IplImage *src1, *src2,*src3;  
    8.     src1 = cvLoadImage("1.jpg");  
    9.     src2 = cvLoadImage("9.jpg");  
    10.     src3 = cvLoadImage("7.jpg");  
    11.   
    12.     cvOr(src1,src2,src3);  
    13.   
    14.     cvShowImage( "测试1", src1);  
    15.     cvShowImage( "测试2", src2);  
    16.     cvShowImage( "测试3", src3);  
    17.     cvWaitKey();  
    18.     return 0;  
    19. }  

    输出结果

    (2)cvOrS函数

    其结构

    [cpp] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. void cvOr(//矩阵与给定标量做或运算  
    2.     const CvArr* src1,//矩阵1  
    3.     CvScalar value,//给定变量  
    4.     CvArr* dst,//结果矩阵  
    5.     const CvArr* mask = NULL//矩阵“开关”  
    6. );  

    实例代码
    [cpp] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. #include <cv.h>  
    2. #include <highgui.h>  
    3. #include <stdio.h>  
    4.   
    5. int main(int argc, char** argv)  
    6. {  
    7.     IplImage *src1, *src2;  
    8.     src1 = cvLoadImage("1.jpg");  
    9.     src2 = cvLoadImage("7.jpg");  
    10.   
    11.     CvScalar cs;  
    12.     cs.val[0] = 0;  
    13.     cs.val[1] = 255;  
    14.     cs.val[2] = 0;  
    15.     cs.val[3] = 0;  
    16.   
    17.     cvOrS(src1,cs,src2);  
    18.   
    19.     cvShowImage( "测试1", src1);  
    20.     cvShowImage( "测试2", src2);  
    21.     cvWaitKey();  
    22.     return 0;  
    23. }  

    输出结果

    (3)cvReduce函数

    其结构

    [cpp] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. CvSize CvReduce(//完成由op指定的约简  
    2.     const CvArr* src,//目标矩阵  
    3.     CvArr* dst,//结果矩阵  
    4.     int dim = -1,//因子系数,//1合并成行,0合并成列,-1转化成对应的dis  
    5.     int op = CV_REDUCE_SUM//指定约简法则  
    6. );  

    ps:其中的op代表的转换操作
    op的值 结果
    CV_REDUCE_SUM 计算所有向量的总和
    CV_REDUCE_AVG 计算所有向量的平均值
    CV_REDUCE_MAX 计算所有向量中的最大值
    CV_REDUCE_MIN 计算所有向量中的最小值

    实例代码

    [cpp] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. #include <cv.h>  
    2. #include <highgui.h>  
    3. #include <stdio.h>  
    4. #include <iostream>  
    5. using namespace std;  
    6.   
    7.   
    8. int main()   
    9. {   
    10.     double a[5][5] =   
    11.     {      
    12.         {1,0,0,0,6},  
    13.         {0,2,0,7,0},  
    14.         {0,0,3,0,0},  
    15.         {0,9,0,4,0},  
    16.         {8,0,0,0,5}  
    17.     };  
    18.   
    19.     double b[5] = {0};  
    20.       
    21.     CvMat va=cvMat(5,5, CV_64FC1,a);  
    22.   
    23.     CvMat vb=cvMat(5,1, CV_64FC1,b);  
    24.   
    25.     cout<<"目标矩阵:"<<endl;  
    26.   
    27.     for(int i=0;i<5;i++)  
    28.     {  
    29.         for(int j=0;j<5;j++)  
    30.             printf("%f ",cvmGet(&va,i,j));  
    31.         cout << endl;  
    32.     }  
    33.   
    34.     cvReduce(&va,&vb,1,CV_REDUCE_SUM);  
    35.   
    36.     cout << "结果向量"<<endl;  
    37.   
    38.     for(int i=0;i<5;i++)  
    39.     {  
    40.             printf("%f ",cvmGet(&vb,i,0));  
    41.         cout << endl;  
    42.     }  
    43.   
    44.     getchar();  
    45.     return 0;  
    46. }  

    输出结果

    (4)cvRepeat函数

    其结构

    [cpp] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. void cvRepeat(//复制图像  
    2.     const CvArr* src,//目标矩阵  
    3.     CvArr* dst//结果矩阵  
    4. );  

    实例代码
    [cpp] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. #include <cv.h>  
    2. #include <highgui.h>  
    3. #include <stdio.h>  
    4. #include <iostream>  
    5. using namespace std;  
    6.   
    7.   
    8. int main()   
    9. {   
    10.     IplImage *src1, *src2,*src3;  
    11.     src1 = cvLoadImage("1.jpg");  
    12.     src2 = cvLoadImage("7.jpg");  
    13.   
    14.     cvRepeat(src1,src2);  
    15.   
    16.     cvShowImage( "测试1", src1);  
    17.     cvShowImage( "测试2", src2);  
    18.     cvWaitKey();  
    19.     return 0;  
    20. }  

    输出结果

    (5)cvScale函数

    其结构

    [cpp] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. void cvScale(//进行线性变换转换  
    2.     const CvArr* src,//输入矩阵  
    3.     CvArr* dst,//输出矩阵  
    4.     double scale,//比例因子  
    5.     double shift = 0.0//放缩比例  
    6. );  

    实例代码
    [cpp] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. #include <cv.h>  
    2. #include <highgui.h>  
    3. #include <stdio.h>  
    4. #include <iostream>  
    5. using namespace std;  
    6.   
    7.   
    8. int main()   
    9. {   
    10.     IplImage* src1 = cvLoadImage("1.jpg",CV_LOAD_IMAGE_GRAYSCALE);    
    11.   
    12.     IplImage* src2 = cvCloneImage(src1);    
    13.   
    14.     IplImage* dst = cvCreateImage(cvGetSize(src1),IPL_DEPTH_64F,src1->nChannels);    
    15.   
    16.     double max_Val,min_Val;    
    17.     cvScale(src1,dst,1.0,0.0);    
    18.     cvAdd(dst,dst,dst);    
    19.   
    20.     cvMinMaxLoc(dst, &min_Val, &max_Val, NULL, NULL, NULL);    
    21.   
    22.     cvScale(dst,src2,1.0,0.0);    
    23.   
    24.     cvScale(dst, dst, 1.0/(max_Val-min_Val), 1.0*(-min_Val)/(max_Val-min_Val));  
    25.   
    26.     cvMinMaxLoc(dst, &min_Val, &max_Val, NULL, NULL, NULL);    
    27.   
    28.     cvShowImage("测试1",src1);    
    29.   
    30.     cvShowImage("测试2",src2);    
    31.   
    32.     cvShowImage("结果",dst);    
    33.   
    34.     cvWaitKey(-1);    
    35.     return 0;  
    36. }  

    输出结果

    (6)cvSet函数

    其结构

    [cpp] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. void cvSet(//对图像中的像素设置value  
    2.     CvArr* arr,//目标矩阵  
    3.     CvScalar value,//设置值  
    4.     const,CvArr* mask = NULL//图像开关  
    5. );  

    实例代码
    [cpp] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. #include <cv.h>  
    2. #include <highgui.h>  
    3. #include <stdio.h>  
    4.   
    5. int main()   
    6. {   
    7.     IplImage *src1, *src2;  
    8.     src1 = cvLoadImage("1.jpg");  
    9.     src2 = cvLoadImage("1.jpg");  
    10.   
    11.     CvScalar cs;  
    12.     cs.val[0] = 0;  
    13.     cs.val[1] = 0;  
    14.     cs.val[2] = 255;  
    15.     cs.val[3] = 0;  
    16.       
    17.     cvSet(src1,cs);  
    18.   
    19.     cvShowImage( "结果图", src1);  
    20.     cvShowImage( "原图", src2);  
    21.     cvWaitKey();  
    22.     return 0;  
    23. }  

    输出结果

    (7)cvSetZero函数

    其结构

    [cpp] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. void cvSetZero(//对图像自动设置为零,相当于cvSet(0.0)  
    2.     CvArr* arr,//目标矩阵  
    3. );  

    实例代码
    [cpp] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. #include <cv.h>  
    2. #include <highgui.h>  
    3. #include <stdio.h>  
    4.   
    5. int main()   
    6. {   
    7.     IplImage *src1, *src2;  
    8.     src1 = cvLoadImage("1.jpg");  
    9.     src2 = cvLoadImage("1.jpg");  
    10.   
    11.     CvScalar cs;  
    12.     cs.val[0] = 0;  
    13.     cs.val[1] = 0;  
    14.     cs.val[2] = 255;  
    15.     cs.val[3] = 0;  
    16.       
    17.     cvSetZero(src1);  
    18.   
    19.     cvShowImage( "结果图", src1);  
    20.     cvShowImage( "原图", src2);  
    21.     cvWaitKey();  
    22.     return 0;  
    23. }  

    输出结果

    to be continued

  • 相关阅读:
    Web大前端面试题-Day12
    Web大前端面试题-Day11
    每天刷Web面试题(前10天汇总)
    Web大前端面试题-Day10
    Web大前端面试题-Day9
    Web大前端面试题-Day8
    Web大前端面试题-Day5
    Web大前端面试题-Day7
    Web大前端面试题-Day6
    php获取时间是星期几
  • 原文地址:https://www.cnblogs.com/Crysaty/p/6509243.html
Copyright © 2020-2023  润新知