//吴锋-优酷-很早的课程-代码可实现
【08矩阵通道与维度】
第一次实验:
#include"stdafx.h"
#include"cv.h"
#include"cxcore.h"
#include"highgui.h"
第一次实验:
#include"stdafx.h"
#include"cv.h"
#include"cxcore.h"
#include"highgui.h"
int main(int argc,char*argv[])//这种方法访问矩阵不是很好,因为调用getRealND要出入站很多次,不适用于大型图片
{
float data[18]=
{30,60,40,60,50,40,
67,88,55,33,22,97,
59,69,32,46,25,45
};
{30,60,40,60,50,40,
67,88,55,33,22,97,
59,69,32,46,25,45
};
CvMat mat;
cvInitMatHeader(&mat,3,6,CV_32FC1,data);//单通道C1 F代表float型,3行6列,第一次是C1,36;第二次是C2,33
cvInitMatHeader(&mat,3,6,CV_32FC1,data);//单通道C1 F代表float型,3行6列,第一次是C1,36;第二次是C2,33
for(int y=0;y<mat.rows;y++)//row行
{
for(int x=0;x<mat.cols;x++)
{
float value=cvGetReal2D(&mat,y,x);//real代表单通道,y行x列
{
for(int x=0;x<mat.cols;x++)
{
float value=cvGetReal2D(&mat,y,x);//real代表单通道,y行x列
printf("%f ",value);
}
printf("\n");//内层列数循环完换行
}
return 0;
}
printf("\n");//内层列数循环完换行
}
return 0;
}
第二次实验:
#include"stdafx.h"
#include"cv.h"
#include"cxcore.h"
#include"highgui.h"
第二次实验:
#include"stdafx.h"
#include"cv.h"
#include"cxcore.h"
#include"highgui.h"
int main(int argc,char*argv[])//这种方法访问矩阵不是很好
{
float data[18]=
{30,60,40,60,50,40,
67,88,55,33,22,97,
59,69,32,46,25,45
};
{30,60,40,60,50,40,
67,88,55,33,22,97,
59,69,32,46,25,45
};
CvMat mat;
cvInitMatHeader(&mat,3,2,CV_32FC3,data);//单通道C1 F代表float型,3行6列,第一次是C1,36;第二次是C2,33,real也要改变,单通道有real
cvInitMatHeader(&mat,3,2,CV_32FC3,data);//单通道C1 F代表float型,3行6列,第一次是C1,36;第二次是C2,33,real也要改变,单通道有real
for(int y=0;y<mat.rows;y++)//row行
{
for(int x=0;x<mat.cols;x++)
{
CvScalar value=cvGet2D(&mat,y,x);//real代表单通道,y行x列;cvscalar是一个4位数组,val【4】,装BGR和alpha
{
for(int x=0;x<mat.cols;x++)
{
CvScalar value=cvGet2D(&mat,y,x);//real代表单通道,y行x列;cvscalar是一个4位数组,val【4】,装BGR和alpha
printf("(%f %f %f)",value.val[0],value.val[1],value.val[2]);
}
printf("\n");//内层列数循环完换行
}
return 0;
}
printf("\n");//内层列数循环完换行
}
return 0;
}