OpenCV 矩阵乘法

初学OpenCV现有如下程序,希望高手先看一下:#include<stdio.h>//通过三个函数分别实现矩阵乘法#include"cv.h"#include"highg... 初学OpenCV现有如下程序,希望高手先看一下:

#include<stdio.h> //通过三个函数分别实现矩阵乘法
#include"cv.h"
#include"highgui.h"

void PrintMat(CvMat *A) //显示矩阵
{
int i,j;
for(i=0;i<A->rows;i++)
{
printf("\n");
switch(CV_MAT_DEPTH(A->type))
{
case CV_32F:
case CV_64F:
for(j=0;j<A->cols;j++)
printf("%9.3f",(float)cvGetReal2D(A,i,j));
break;
case CV_8U:
case CV_16U:
for(j=0;j<A->cols;j++)
printf("%6d",(int)cvGetReal2D(A,i,j));
break;
default:
break;
}
}
printf("\n");
}

int main() // 测试矩阵乘法
{
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],d[9],e[9];

CvMat Ma, Mb, Mc, Md, Me;

cvInitMatHeader( &Ma, 3, 4, CV_64FC1, a, CV_AUTOSTEP );
cvInitMatHeader( &Mb, 4, 3, CV_64FC1, b, CV_AUTOSTEP );
cvInitMatHeader( &Mc, 3, 3, CV_64FC1, c, CV_AUTOSTEP );
cvInitMatHeader( &Md, 3, 3, CV_64FC1, d, CV_AUTOSTEP );
cvInitMatHeader( &Me, 3, 3, CV_64FC1, e, CV_AUTOSTEP );

printf("矩阵A=");
PrintMat(&Ma);
printf("\n");

printf("矩阵B=");
PrintMat(&Mb);
printf("\n");

cvMatMulAdd( &Ma, &Mb, 0, &Mc );
printf("通过cvMatMulAdd()函数实现矩阵乘法C=A*B");
PrintMat(&Mc);
printf("\n");

cvMatMul(&Ma,&Mb,&Md);
printf("通过cvMatMul()函数实现矩阵乘法D=A*B");
PrintMat(&Md);
printf("\n");

cvGEMM(&Ma,&Mb,1,&Me,0,&Me,0);
printf("通过cvGEMM()函数实现矩阵乘法E=A*B");
PrintMat(&Me);
printf("\n");

return 0;
}

主函数中的数组类型似乎只能是double,我尝试着把矩阵元素设成float或者unsigned之类的几种类型,结果要么运行出错要么结果显示乱码。。请问为什么?是不是像这种处理矩阵的情况一般都要设置成double类型?
展开
jackone32123
2011-08-01 · TA获得超过441个赞
知道小有建树答主
回答量:327
采纳率:0%
帮助的人:279万
展开全部
没问题啊?
你该数组type后,改没改initMatHeader里对应的第4个参数?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
东莞大凡
2024-08-07 广告
在东莞市大凡光学科技有限公司,我们利用Halcon软件处理机器视觉项目时,会用到自定义标定板以满足特定需求。Halcon支持用户根据实际应用场景自定义标定板形状与标记点。这不仅可以灵活应对不同工作环境,还能提高标定精度。通过调整圆点数量、间... 点击进入详情页
本回答由东莞大凡提供
chensuchang
2011-07-19 · TA获得超过6399个赞
知道大有可为答主
回答量:6655
采纳率:50%
帮助的人:4941万
展开全部
只有double类型的才不会溢出
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式