zoukankan      html  css  js  c++  java
  • 《学习opencv》笔记——矩阵和图像操作——cvAbs,cvAbsDiff and cvAbsDiffS

    矩阵和图像的操作


    (1)cvAbs,cvAbsdiff,cvAbsDiffS

    它们的结构为:

    void cvAbs(  //取src中元素的绝对值,写到dst中
      const CvArr* src,
      const dst
    );
    
    void cvAbsDiff( //src1减去src2的差的绝对值存入dst
      const CvArr* src1,
      const CvArr* src2,
      const dst
    );
    
    void cvAbsDiffs( //src中每一个元素减去value存入dst中
      const CvArr* src,
      CvScalar value,
      const dst
    _;


    使用实例代码:


    #include <cv.h>
    #include <highgui.h>
    #include <cxcore.h>
    #include <iostream>
    using namespace std;
    int main( int argc, char** argv ){
    	CvMat *mat;
    	mat=cvCreateMat(4,4,CV_32FC1);
    
    	float value = 0.0;
    	int i = 0, j = 0;
    	cout<<"初始化原始数组"<<endl;
    	for ( i = 0; i < 4; i ++ ){
    		for( j = 0; j < 4; j ++ ){
    
    			value -= 1.0;
    			CV_MAT_ELEM( *mat, float, i, j) = value;		
    		}
    	}
    	for ( i = 0; i < 4; i ++ ){
    		for( j = 0; j < 4; j ++ ){
    
    			cout<<"	"<<CV_MAT_ELEM( *mat, float, i, j);		
    		}
    		cout<<endl;
    	}
    	CvMat *matDes;
    
    	matDes=cvCreateMat(4,4,CV_32FC1); 
    
    	cout<<"目标矩阵"<<endl;
    	for ( i = 0; i < 4; i ++ ){
    		for( j = 0; j < 4; j ++ ){
    			cvmSet( matDes, i, j,0);
    			cout<<"	"<<CV_MAT_ELEM( *matDes, float, i, j);		
    		}
    
    		cout<<endl;
    	}
    
    	cvAbs( mat, matDes );
    	cout<<"数组的绝对值"<<endl;
    	for ( i = 0; i < 4; i ++ ){
    		for( j = 0; j < 4; j ++ ){
    
    			cout<<"	"<<CV_MAT_ELEM( *matDes, float, i, j);		
    		}
    
    		cout<<endl;
    	}
    
    	CvMat *matDiff1 = cvCreateMat(4,4,CV_32FC1);
    
    	cvAbsDiff( mat,matDes , matDiff1);
    	cout<<"两个差的绝对值"<<endl;
    	for ( i = 0; i < 4; i ++ ){
    		for( j = 0; j < 4; j ++ ){
    
    			cout<<"	"<<CV_MAT_ELEM( *matDiff1, float, i, j);		
    		}
    
    		cout<<endl;
    	}
    
    	CvScalar cs;
    	cs.val[0] = 2.0;
    	cs.val[1] = 1.0;
    
    	cvAbsDiffS( mat, matDiff1,cs);
    	cout<<"矩阵减去标准值的绝对值"<<endl;
    	for ( i = 0; i < 4; i ++ ){
    		for( j = 0; j < 4; j ++ ){
    
    			cout<<"	"<<CV_MAT_ELEM( *matDiff1, float, i, j);		
    		}
    
    		cout<<endl;
    	}
    	cvReleaseMat( &mat );
    	cvReleaseMat( &matDes );
    	getchar();
    	return 0;
    }


    输出结果:




       to be continued

  • 相关阅读:
    charindex代替like并非"更快更全面"
    SQLServer2005中的几个统计技巧
    SQLServer获取Excel中所有Sheet
    SQLServer2005的查询独占模拟
    SSAS事实表和维度表数据类型必须一致
    monodevelop 出现has line endings which differ from the policy settings.的解决方法
    mono for android Main.axml
    vs2010 错误提示框:文件加载 使用 简体中文(GB2312
    在Virtual Machine上运行Hello China的方法和工具
    embed基本语法
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/3770931.html
Copyright © 2011-2022 走看看