一:CvMat* cvInitMatHeader( CvMat* mat, int rows, int cols, int type,void* data=NULL, int step=CV_AUTOSTEP );

mat  指针指向要被初始化的矩阵头.

rows  矩阵的行数.

cols 矩阵的列数.

type 矩阵元素类型.

data 可选的,将指向数据指针分配给矩阵头.

step 排列后的数据的整个行宽。默认状态下。使用 STEP 的最小可能值。比如假定矩阵的行与行之间无隙

double a[] = { 1, 2, 3, 4

5, 6, 7, 8,

9, 10, 11, 12 };

double b[] = { 1, 5, 9,

2, 6, 10,

3, 7, 11,

4, 8, 12 };

double c[9];// c 数组存贮 a(3x4) 和 b(4x3) 矩阵的积

CvMat Ma, Mb, Mc ;

cvInitMatHeader( &Ma, 3, 4, CV_64FC1, a );//创建矩阵,按行存储的

cvInitMatHeader( &Mb, 4, 3, CV_64FC1, b );

cvInitMatHeader( &Mc, 3, 3, CV_64FC1, c );

cvMatMulAdd( &Ma, &Mb, 0, &Mc );

cvReleaseMat(&Ma);

cvReleaseMat(&Mb);

cvReleaseMat(&Mc);

还有一种初始化矩阵:

double a[] = { 1,   2,   3,   4,

5,   6,   7,   8,

9, 10, 11, 12 };

CvMat Ma=cvMat(3, 4, CV_64FC1, a);

二:

cvMat存储矩阵的方法

cvGetRealND();返回单通道数组的指定元素

double cvGetReal1D( const CvArr* arr, int idx0 );

double cvGetReal2D( const CvArr* arr, int idx0, int idx1 );

double cvGetReal3D( const CvArr* arr, int idx0, int idx1, int idx2 );

double cvGetRealND( const CvArr* arr, int* idx );

arr

输入数组,必须是单通道.

idx0

元素下标的第一个成员,以 0 为基准

idx1

元素下标的第二个成员。以 0 为基准

idx2

元素下标的第三个成员。以 0 为基准

idx

元素下标数组

返回特殊的数组元素

cvSetRealND();//改动指定数组元素值

void cvSetReal1D( CvArr* arr, int idx0, double value );

void cvSetReal2D( CvArr* arr, int idx0, int idx1, double value );

void cvSetReal3D( CvArr* arr, int idx0, int idx1, int idx2, double value );

void cvSetRealND( CvArr* arr, int* idx, double value );

arr

输入数组.

idx0

元素下标的第一个成员。以 0 为基点

idx1

元素下标的第二个成员。以 0 为基点

idx2

元素下标的第三个成员,以 0 为基点

idx

元素下标数组

value

指派的值

cvGetND();//返回特殊的数组元素 多通道的

CvScalar cvGet1D( const CvArr* arr, int idx0 );

CvScalar cvGet2D( const CvArr* arr, int idx0, int idx1 );

CvScalar cvGet3D( const CvArr* arr, int idx0, int idx1, int idx2 );

CvScalar cvGetND( const CvArr* arr, int* idx );

arr

输入数组.

idx0

元素下标第一个以 0 为基准的成员

idx1

元素下标第二个以 0 为基准的成员

idx2

元素下标第三个以 0 为基准的成员

idx

元素下标数组

cvSetND();//改动指定的数组?多通道的

void cvSet1D( CvArr* arr, int idx0, CvScalar value );

void cvSet2D( CvArr* arr, int idx0, int idx1, CvScalar value );

void cvSet3D( CvArr* arr, int idx0, int idx1, int idx2, CvScalar value );

void cvSetND( CvArr* arr, int* idx, CvScalar value );

arr

输入数组

idx0

元素下标的第一个成员,以 0 为基点

idx1

元素下标的第二个成员,以 0 为基点

idx2

元素下标的第三个成员,以 0 为基点

idx

元素下标数组

value

指派的值

voidcvmSet( CvMat* mat, int row, int col, double value );//设置单通道浮点矩阵的指定元素

mat

矩阵.

row

行下标,以 0 为基点.

col

列下标,以 0 为基点.

value

矩阵元素的新值

doublecvmGet( const CvMat* mat, int row, int col );//返回单通道浮点矩阵指定元素

mat

输入矩阵.

row

行下标。以 0 为基点.

col

列下标,以 0 为基点

#include "cv.h"  

#include "highgui.h"  

#include <stdio.h> 

#include <math.h>  

#include <string.h>





#pragma comment(lib, "cv.lib")  

#pragma comment(lib, "cxcore.lib")  

#pragma comment(lib, "highgui.lib")  





main()

{  

CvMat Ma;

CvMat Mb;

CvMat *Mc;

int i,j;

double a[] = { 1,    2,    3,    4};

double b[] = { 1,    2,    3,    4 };

double c[]={0};

Mc=cvCreateMat(2,2,CV_64FC1);

  Ma=cvMat(2, 2, CV_64FC1, a);  

  Mb=cvMat(2, 2, CV_64FC1, b); 

  //cvTranspose(&Ma, Mc);//Ma的转置存储在Mc中,不能对自己进行转置

  cvMatMul(&Ma, &Mb, Mc);

  cvmSet(Mc,1,1,3);//设置2行2列的值为3

//cvInitMatHeader(&Ma, 3, 4, CV_64FC1, a,CV_AUTOSTEP);

for(i=0;i<2;i++)

for(j=0;j<2;j++)

printf("%f ",cvGetReal2D(Mc,i,j));

//printf("%f ",cvGet2D(Mc,i,j));

}

CvMat 矩阵的使用方法和简单程序的更多相关文章

  1. 五步教你实现使用Nginx+uWSGI+Django方法部署Django程序

    Django的部署可以有很多方式,采用nginx+uwsgi的方式是其中比较常见的一种方式. 在这种方式中,我们的通常做法是,将nginx作为服务器最前端,它将接收WEB的所有请求,统一管理请求.ng ...

  2. windbg 基础命令实战 - 简单程序破解

    以前玩游戏遇到一些实在过不去的管卡,经常会找一些游戏修改软件来修改游戏,让自己变得无比强大,将boss一路砍瓜切菜过足游戏瘾.其实游戏修改软件的功能大多都比较简单,我们可以通过windbg的一些简单命 ...

  3. 报表引擎API开发入门—简单程序数据集

    小编最近接的项目是有关报表开发的,很想把这部分知识分享出来.希望大家能够支持我!不多说,马上进入我们今天的话题. API基本知识 小编最近项目所做的是关于一个报表软件—FineReport报表开发的一 ...

  4. ListView与.FindControl()方法的简单练习 #2 -- ItemUpdting事件中抓取「修改后」的值

    原文出處  http://www.dotblogs.com.tw/mis2000lab/archive/2013/06/24/listview_itemupdating_findcontrol_201 ...

  5. c++学习笔记2(c++简单程序)

    c++的简单程序 练习一: #include <iostream>int main(){std::cout<<"你好c++\n";int x;std::ci ...

  6. [ 转载 ] Java基础10--关于Object类下所有方法的简单解析

    关于Object类下所有方法的简单解析 类Object是类层次结构的根类,是每一个类的父类,所有的对象包括数组,String,Integer等包装类,所以了解Object是很有必要的,话不多说,我们直 ...

  7. Tornado 安装及简单程序示例

    1.安装步骤:tar xvzf tornado-3.2.tar.gz cd tornado-3.2 python setup.py build sudo python setup.py install ...

  8. 使用Nginx+uWSGI+Django方法部署Django程序(上)

    Django的部署可以有很多方式,采用nginx+uwsgi的方式是其中比较常见的一种方式. 在这种方式中,我们的通常做法是,将nginx作为服务器最前端,它将接收WEB的所有请求,统一管理请求.ng ...

  9. IDA 调试 Android 方法及简单的脱壳实现

    IDA 调试 Android 方法及简单的脱壳实现 标签: android原创逆向调试dalvik 2016-05-24 14:24 9286人阅读 评论(3) 收藏 举报 分类: 原创(25) An ...

随机推荐

  1. split(),preg_split()与explode()函数分析与介

    split(),preg_split()与explode()函数分析与介 发布时间:2013-06-01 18:32:45   来源:尔玉毕业设计   评论:0 点击:965 split()函数可以实 ...

  2. 分享MYSQL中的各种高可用技术(源自姜承尧大牛)

    分享MYSQL中的各种高可用技术(源自姜承尧大牛) 图片和资料来源于MYSQL大牛姜承尧老师(MYSQL技术内幕作者) 姜承尧: 网易杭州研究院 技术经理 主导INNOSQL的开发 mysql高可用各 ...

  3. 简单理解在Mac OS X上运行ASP.NET程序

    运行ASP.NET程序的三要素: 1) CLR(.NET运行时) 2) KRE(ASP.NET运行时) 3) Web服务器 所以在Mac OS X上运行ASP.NET程序,就需要对应这三要素的东西: ...

  4. [ALM]一步一步搭建MS ALM环境 - 安装TFS + SQL SERVER

    描述: 安装SQL SERVER 2012,安装TFS 2013,配置TFS,挽起袖子,准备干活儿 步骤: 1,打开Hyper-V Manager,参考[Hyper-V]使用操作系统模板创建新的虚拟机 ...

  5. 从源代码分析Android-Universal-Image-Loader的缓存处理机制

    讲到缓存,平时流水线上的码农一定觉得这是一个高大上的东西.看过网上各种讲缓存原理的文章,总感觉那些文章讲的就是玩具,能用吗?这次我将带你一起看过UIL这个国内外大牛都追捧的图片缓存类库的缓存处理机制. ...

  6. [ACM_模拟] UVA 10881 Piotr's Ants[蚂蚁移动 数组映射 排序技巧]

    "One thing is for certain: there is no stopping them;the ants will soon be here. And I, for one ...

  7. Git可视化极简易教程 —— Git GUI使用方法

    前言 之前一直想一篇这样的东西,因为最初接触时,我也认真看了廖雪峰的教程,但是似乎我觉得讲得有点多,而且还是会给我带来很多多余且重复的操作负担,所以我希望能压缩一下它在我工作中的成本,但是搜索了一下并 ...

  8. Nodejs学习笔记(十)--- 与MongoDB的交互(mongodb/node-mongodb-native)、MongoDB入门

    目录 简介 MongoDB安装(windows) MongoDB基本语法和操作入门(mongo.exe客户端操作) 库操作 插入 查询 修改 删除 存储过程 nodejs操作MongoDB 插入 查询 ...

  9. java集合——题4,6

    4.(List)写一个函数reverseList,该函数能够接受一个List,然后把该List 倒序排列. 例如: List list = new ArrayList(); list.add(“Hel ...

  10. iOS开发-UITableView顶部图片下拉放大

    关于顶部图片下拉放大,在用户展示的个人中心显示用户个人头像信息,设置UITableView的headerView实现,UITableView继承自UIScrollView,同样的设置UIScrollV ...