多維矩陣的結構分析:
例子:#include "cv.h"
#include "highgui.h"
#include
#include
#include
void main()
;cvma*** *mynd=cvcreatema***(3,size,cv_8sc1);
printf("1 size=%d step=%d/n",mynd->dim[0]);
printf("2 size=%d step=%d/n",mynd->dim[1]);
printf("3 size=%d step=%d/n",mynd->dim[2]);
}結果:
1 size=2 step=12
2 size=3 step=4
3 size=4 step=1
經過opencv源**分析:
(1)在cvcreatema***函式中先後又呼叫了cvcreatema***header和cvcreatedata函式。
原始碼:cv_impl cvma****
cvcreatema***( int dims, const
int* sizes, int type )
(2)在cvcreatema***header中,首先為cvma***結構體分配了記憶體,然後接著呼叫了cvinitma***header函式。
原始碼:cv_impl cvma****
cvcreatema***header( int dims, const
int* sizes, int type )
(3)在cvinitma***header中,其初始化了結構體cvma***的各個成員變數。
原始碼:cv_impl cvma****
cvinitma***header( cvma**** mat, int dims, const
int* sizes,
int type, void* data )
mat->type = cv_ma***_magic_val | (step <= int_max ? cv_mat_cont_flag : 0) | type;
mat->dims = dims;
mat->data.ptr = (uchar*)data;
mat->refcount = 0;
mat->hdr_refcount = 0;
result = mat;
__end__;
if( cvgeterrstatus() < 0 && mat )
return result;
}(4)cvcratedata原始碼如下所示
原始碼:cv_impl void
cvcreatedata( cvarr* arr )
else
if( cv_is_image_hdr(arr))
else
cvipl.allocatedata( img, 0, 0 );
img->width = width;
img->depth = depth;}}
else
if( cv_is_ma***_hdr( arr ))
else
}cv_call( mat->refcount = (int*)cvalloc( total_size +
sizeof(int) + cv_malloc_align ));
mat->data.ptr = (uchar*)cvalignptr( mat->refcount + 1, cv_malloc_align );
*mat->refcount = 1;
}else
__end__;
}
OpenCV基礎知識
opencv 使用 bsd 許可證,因此對研究和商業用途均免費.opencv是乙個具有實時計算機視覺功能的程式設計庫,它可以免費用於學術和商業用途 bsd許可證 opencv庫的介紹,包括其主要模組和與庫相關的其他有用資訊。為什麼在研究工作中引用opencv 如果您在研究中使用opencv,建議您引...
矩陣基礎知識
本章介紹矩陣的概念 矩陣的基本運算 可逆矩陣分塊矩陣的概念及其運算.矩陣是乙個數表,它的行數和列數可以不相等.行列式是乙個算式,它的行數和列數必須相等.當a為n階方陣時,稱det a 或 a 為方陣a 生成的 a為非奇異矩陣.行列式.當det a 0時,稱a為奇異矩陣 當det a 0時,稱a為非奇...
矩陣的基礎知識
乘法結合律 ab c a bc 乘法左分配律 a b c ac bc 乘法右分配律 c a b ca cb 對數乘的結合性k ab ka b a kb 轉置 ab t btat 矩陣乘法一般不滿 換律 除了有些特殊的方陣之間的乘法 滿足乘法交換律的方陣稱為可交換矩陣,即矩陣a,b滿足 a b b a...