单一矩阵的运算

您所在的位置:网站首页 matlab如何计算矩阵的转置 单一矩阵的运算

单一矩阵的运算

2023-06-25 18:04| 来源: 网络整理| 查看: 265

单一矩阵的运算 原创

autumn 2023-06-17 07:26:58 博主文章分类:OpenCV图像处理 ©著作权

文章标签 image #pragma Image i++ 文章分类 Python 后端开发

©著作权归作者所有:来自51CTO博客作者autumn的原创作品,请联系作者获取转载授权,否则将追究法律责任

//运行参数:girl.jpg #pragma comment(lib,"highgui.lib") #pragma comment(lib,"cxcore.lib") #pragma comment(lib,"cv.lib") #pragma comment(lib,"ml.lib") #pragma comment(lib,"cvaux.lib") #pragma comment(lib,"cvcam.lib") #include "cv.h" #include "highgui.h" #include inline void cvDoubleMatPrint( const CvMat* mat ); inline void cvDoubleMatSet( CvMat* mat,double v ); inline void cvDoubleMatSet( CvMat* mat); inline void cvScalarPrint(const CvScalar& s); int main( int argc, char** argv ) { IplImage* pImg; //声明IplImage指针 if( argc == 2 && (pImg = cvLoadImage( argv[1], CV_LOAD_IMAGE_UNCHANGED)) != 0 ) { // 单一矩阵的运算: CvMat *Ma, *Mb; Ma=cvCreateMat(4,4,CV_32FC1); Mb=cvCreateMat(4,4,CV_32FC1); //cvDoubleMatSet(Ma); cvSetIdentity(Ma); cvTranspose(Ma, Mb); // 转置:transpose(Ma) -> Mb (注意转置阵不能返回给Ma本身) cvDoubleMatPrint(Ma); printf("转置后=====================\n"); cvDoubleMatPrint(Mb); printf("迹:=====================\n"); CvScalar t = cvTrace(Ma); // 迹:trace(Ma) -> t.val[0] cvScalarPrint(t); double d = cvDet(Ma); // 行列式:det(Ma) -> d printf("行列式:%lf=====================\n",d); cvInvert(Ma, Mb); // 逆矩阵:inv(Ma) -> Mb printf("逆矩阵=====================\n"); cvDoubleMatPrint(Mb); cvNamedWindow( "Image", 1 ); // 创建窗口 cvShowImage( "Image", pImg ); // 显示图像 cvWaitKey(0); // 等待按键 cvReleaseMat(&Ma); cvReleaseMat(&Mb); cvDestroyWindow( "Image" ); // 销毁窗口 cvReleaseImage( &pImg ); // 释放图像 return 0; } return -1; } inline void cvDoubleMatPrint( const CvMat* mat ) { int i, j; for( i = 0; i < mat->rows; i++ ) { for( j = 0; j < mat->cols; j++ ) { printf( "%lf ",cvmGet( mat, i, j ) ); } printf( "\n" ); } } inline void cvDoubleMatSet( CvMat* mat,double v ) { int i, j; for( i = 0; i < mat->rows; i++ ) { for( j = 0; j < mat->cols; j++ ) { cvmSet( mat,i,j,v); } } } inline void cvDoubleMatSet( CvMat* mat) { int i, j; double v; for( i = 0; i < mat->rows; i++ ) { for( j = 0; j < mat->cols; j++ ) { v=i*10+j; cvmSet( mat,i,j,v); } } } inline void cvScalarPrint(const CvScalar& s) { printf("\n%f %f %f %f\n",s.val[0],s.val[1],s.val[2],s.val[3]); //CvScalar t = cvTrace(Ma); // 迹:trace(Ma) -> t.val[0] }

收藏 评论 分享 举报

上一篇:cvEigenVV 特征值 对应的特征向量

下一篇:向量乘积



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3