opencv如何把一个矩阵不同列分离开_opencv-矩阵操作总结 - crystal8700的专栏 - CSDN博客...

opencv-矩阵操作总结 收藏

1.初始化矩阵:

方式一、逐点赋值式:

CvMat* mat = cvCreateMat( 2, 2, CV_64FC1 );

cvZero( mat );

cvmSet( mat, 0, 0, 1 );

cvmSet( mat, 0, 1, 2 );

cvmSet( mat, 1, 0, 3 );

cvmSet( mat, 2, 2, 4 );

cvReleaseMat( &mat );

方式二、连接现有数组式:

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

5, 6, 7, 8,

9, 10, 11, 12 };

CvMat mat = cvMat( 3, 4, CV_64FC1, a ); // 64FC1 for double

// 不需要cvReleaseMat,因为数据内存分配是由double定义的数组进行的。

2.IplImage 到cvMat的转换

方式一、cvGetMat方式:

CvMat mathdr, *mat = cvGetMat( img, &mathdr );

方式二、cvConvert方式:

CvMat *mat = cvCreateMat( img->height, img->width, CV_64FC3 );

cvConvert( img, mat );

// #define cvConvert( src, dst ) cvConvertScale( (src), (dst), 1, 0 )

3.cvArr(IplImage或者cvMat)转化为cvMat

方式一、cvGetMat方式:

int coi = 0;

cvMat *mat = (CvMat*)arr;

if( !CV_IS_MAT(mat) )

{

mat = cvGetMat( mat, &matstub, &coi );

if (coi != 0) reutn; // CV_ERROR_FROM_CODE(CV_BadCOI);

}

写成函数为:

// This is just an example of function

// to support both IplImage and cvMat as an input

CVAPI( void ) cvIamArr( const CvArr* arr )

{

CV_FUNCNAME( "cvIamArr" );

__BEGIN__;

CV_ASSERT( mat == NULL );

CvMat matstub, *mat = (CvMat*)arr;

int coi = 0;

if( !CV_IS_MAT(mat) )

{

CV_CALL( mat = cvGetMat( mat, &matstub, &coi ) );

if (coi != 0) CV_ERROR_FROM_CODE(CV_BadCOI);

}

// Process as cvMat

__END__;

}

4.图像直接操作

方式一:直接数组操作 int col, row, z;

uchar b, g, r;

for( y = 0; row < img->height; y++ )

{

for ( col = 0; col < img->width; col++ )

{

b = img->imageData[img->widthStep * row + col * 3]

g = img->imageData[img->widthStep * row + col * 3 + 1];

r = img->imageData[img->widthStep * row + col * 3 + 2];

}

}

方式二:宏操作:

int row, col;

uchar b, g, r;

for( row = 0; row < img->height; row++ )

{

for ( col = 0; col < img->width; col++ )

{

b

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值