单一矩阵的运算 |
您所在的位置:网站首页 › matlab如何计算矩阵的转置 › 单一矩阵的运算 |
单一矩阵的运算
原创
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 |