精华内容
下载资源
问答
  • 通过查阅资料和老师的指导,如果想把三维坐标在屏幕上显示出来,要先转换成二维坐标,因为屏幕上显示的都是二维数据,就比如一张图片上面的像素点都是二维数据(x,y),即便有通道数,也是用二维来表示的。...

    
    
    数据:利用kinect已经将人体骨架的三维坐标提取出来,并保存在一个txt文档里面

    目的:将三维坐标在屏幕上显示出来。

    工具:openGL

     

    通过查阅资料和老师的指导,如果想把三维坐标在屏幕上显示出来,要先转换成二维坐标,因为屏幕上显示的都是二维数据,就比如一张图片上面的像素点都是二维数据(xy,即便有通道数,也是用二维来表示的。而能实现这个功能的工具有openGLDirect3Djava3D。通过查看《OpenGL入门教程()》,知道里面有将三维坐标显示的函数glVertex3f(1.0f, 3.0f, 0.0f);所以打算用openGL实现。

    一:openGL简介

    OpenGL英语Open Graphics Library)是个定义了一个跨编程语言、跨平台应用程序接口API)的规范,它用于生成二维三维图像。这个接口由近三百五十个不同的函数调用组成,用来从简单的图形比特绘制复杂的三维景象。而另一种程序接口系统是仅用于MicrosoftWindows上的Direct3DOpenGL常用于CAD拟实境、科学可视化程序和电子游戏开发。(来自维基百科)

    看以上的的介绍,可以知道,openGL可以跨平台,而Direct3D只能在微软的系统上运行的API。微软为了推广自己的Direct3D,自从在VC6.0上这个也是老师建议学习一下API的原因,虽然只是皮毛。

    进入正题:

    首先,要配置openGL GLUTgl使用工具包)的环境(转)

    第一步:下载OpenGLGLUT

    Windows环境下的GLUT下载地址:(苹果机不需要安装,自带)  

    http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip

    第二步:OpenGL库和配置文件

    OpenGL库配置用到的文件分为下面三类:

    ■ 动态链接库文件(.dll

    glaux.dll, glu32.dll,glut32.dll, OPENGL32.DLL, glut.dll

    ■ 头文件(.h

    GL.H, GLAUX.H, GLU.H,glut.h

    ■ 库文件(.lib

    GLAUX.LIBGlu32.libglut32.libOpengl32.libglut.lib

    其中opengl32.dll,glaux.dll,glu32.dll是安装显卡驱动自带,应该每个系统里面都有,如果没有重新安装显卡驱动。

    其中glut32.dll, glut.dll, glut.h,glut32.lib, glut.lib 是在刚才那个地址下载的,打开压缩包后会有5个文件

    下面就是区别了,VC++2008不带GL.H, GLAUX.h,glu.h, glaux.lib, glu32.lib,opengl32.lib这些文件要在网上下载或者在VC6.0里面拷贝出来,

    如果想要全套的文件,网上可以下载,也可以给我博客留言,我发给你。 

    第三步:Windows下配置OpenGL

    glut32.dll,glut.dll拷贝到C:\WINDOWS\system32目录下,system32目录下应该已经有 opengl32.dll, glu32.dll了。

    GL.H, GLAUX.h, glu.h,glut.h  拷贝到 C:\Program Files\Microsoft Visual Studio9.0\VC\include\gl

     GLAUX.LIBGlu32.libglut32.libOpengl32.libglut.lib拷贝到 C:\Program Files\Microsoft Visual Studio9.0\VC\lib

    接下来:实现三维坐标的显示。

    遇到的问题1由于我有15个骨骼点每一帧上面,所有我需要把这15个骨骼点显示出来,并且用直线连接起来,实现一帧图像中骨骼的重建。但是如果用线连起来之后,就有分不清楚点在哪的可能。比如:一条直线上可能有三个点,但是由于没有弯曲,所以会以为只有两端的两个点(或者只有弯曲处的点),为了解决这个问题,可以在三维点的周围画出一个圆球或者方块。也就是为了将是三维点的地方凸显出来。但是由于openGL要求:指定顶点的命令必须包含在glBegin 函数之后,glEnd 函数之前(否则指定的定点将被忽略),并由glBegin 来指明如何使用这些点。举例说明下:

    glBegin(GL_POINTS);

       glVertex2f(0.0f,0.0f);

       glVertex2f(0.5f, 0.0f);

    glEnd();

     

    就是不管你是画点,画线,画多边形,等,要在glbeginglEnd之间。和MFC中的路径层的定义差不多。

    那么问题又来了,为什么openGL要这么做呢?

    自然是有道理的:

    假设现在我已经指定了若干顶点,那么 OpenGL 是如何知道我想拿这些顶点来干什么呢?是一个一个的画

    出来,还是连成线?或者构成一个多边形?或者做其它什么事情?

     

    问题2如果在给定的glBeginglEnd中,我只能画给定的几种图形中的一个,不知道怎么既画Line又画圆或者方块之类的东西(应该能实现,但是我没有找到办法)。

    解决办法:

    为了解决以上两个问题,既能凸显出点存在的位置,又能将骨架显示出来(也就是将点用线连上)。我将每两点的连线用不同的颜色表示,同时将显示的颜色变的粗一些(openGL里面有函数void glLineWidth(GLfloat width);可以指定直线的宽度)。这样以上两个问题都解决了。

     

    问题3:怎么将一帧一帧的图像形成视频,跑起来。

    解决办法:

    利用函数glutIdleFunc(&myIdle);该函数在CPU空闲的时候被调用,参数myIdle是一个自定义函数,将要显示的视频帧的函数myDisplay放入其中,就可以实现视频的功能了。因为CPU是循环调用这个函数的。

     

    总结:解决这个问题分以下两步:

    1、将txt里面的数据全部读取到一个Vector中,二维Vector,每一维表示一帧图像的数据。

    2、将一帧数据在myDisplay函数中显示出来。在myIdle函数里面调用myDisplay函数即可。由于myDisplay循环被调用,所以视频帧也就成视频了。

     上代码:新手,写的不好。

    #include "stdafx.h"
    
    #include <iostream>
    #include <string>
    #include <fstream>
    #include <vector>
    #include <windows.h>
    #include <math.h>	
    #include <time.h> 
    #define GLUT_DISABLE_ATEXIT_HACK
    #include <GL/glut.h>
    
    
    using namespace std;
    
    int i=0;
    vector<float> skeletonData;
    int frameidx = 0;
    vector< vector<float> > frames;
    
    //计算帧率
    double CalFrequency() 
    { 
    	static int count;  
    	static double save; 
    	static clock_t last, current; 
    	double timegap; 
    
    	++count; 
    	if( count <= 50 ) 
    		return save; 
    	count = 0; 
    	last = current; 
    	current = clock(); 
    	timegap = (current-last)/(double)CLK_TCK;  
    	save = 50.0/timegap; 
    	return save; 
    } 
    
    //用直线画骨架
    void myDisplayLine()
    {
    	double FPS = CalFrequency(); 
    	//printf("FPS = %f\n", FPS); 
    	cout <<"第"<< frameidx<<"帧"<< endl;
    	skeletonData = frames[frameidx];
    	glClear(GL_COLOR_BUFFER_BIT);
    	//glPointSize(5.0f);
    	glLineWidth(3.0f);
    	//glBegin(GL_POINTS);
    	glBegin(GL_LINES);
    	//1--2
    	glColor3ub(255,0,0);//红
    	//1--2
    	glVertex3f(skeletonData[0], skeletonData[1], 0.999999);
    	glVertex3f(skeletonData[3], skeletonData[4], skeletonData[5]);
    	
    	//2--3
    	glColor3ub(0,255,0);//绿
    	glVertex3f(skeletonData[3], skeletonData[4], skeletonData[5]);
    	glVertex3f(skeletonData[6], skeletonData[7], skeletonData[8]);
    	//2--4
    	glColor3ub(0,0,255);//蓝
    	glVertex3f(skeletonData[3], skeletonData[4], skeletonData[5]);
    	glVertex3f(skeletonData[9], skeletonData[10], skeletonData[11]);
    	//3--5
    	glColor3ub(255,255,0);//黄
    	glVertex3f(skeletonData[6], skeletonData[7], skeletonData[8]);
    	glVertex3f(skeletonData[12], skeletonData[13], skeletonData[14]);
    	//5--7
    	glColor3ub(255,255,255);//白
    	glVertex3f(skeletonData[12], skeletonData[13], skeletonData[14]);
    	glVertex3f(skeletonData[18], skeletonData[19], skeletonData[20]);
    	//4--6
    	glColor3ub(255,0,255);//粉
    	glVertex3f(skeletonData[9], skeletonData[10], skeletonData[11]);
    	glVertex3f(skeletonData[15], skeletonData[16], skeletonData[17]);
    	//6--8
    	glColor3ub(255,128,0);//橙
    	glVertex3f(skeletonData[15], skeletonData[16], skeletonData[17]);
    	glVertex3f(skeletonData[21], skeletonData[22], skeletonData[23]);
    	//2--9
    	glColor3ub(0,255,255);
    	glVertex3f(skeletonData[3], skeletonData[4], skeletonData[5]);
    	glVertex3f(skeletonData[24], skeletonData[25], skeletonData[26]);
    	//9--10
    	glColor3ub(128,128,0);
    	glVertex3f(skeletonData[24], skeletonData[25], skeletonData[26]);
    	glVertex3f(skeletonData[27], skeletonData[28], skeletonData[29]);
    	//9--11
    	glColor3ub(128,128,128);
    	glVertex3f(skeletonData[24], skeletonData[25], skeletonData[26]);
    	glVertex3f(skeletonData[30], skeletonData[31], skeletonData[32]);
    	//10--12
    	glColor3ub(0,128,64);
    	glVertex3f(skeletonData[27], skeletonData[28], skeletonData[29]);
    	glVertex3f(skeletonData[33], skeletonData[34], skeletonData[35]);
    	//12--14
    	glColor3ub(64,0,64);
    	glVertex3f(skeletonData[33], skeletonData[34], skeletonData[35]);
    	glVertex3f(skeletonData[39], skeletonData[40], skeletonData[41]);
    	//11--13
    	glColor3ub(0,64,64);
    	glVertex3f(skeletonData[30], skeletonData[31], skeletonData[32]);
    	glVertex3f(skeletonData[36], skeletonData[37], skeletonData[38]);
    	//13--15
    	glColor3ub(128,64,64);
    	glVertex3f(skeletonData[36], skeletonData[37], skeletonData[38]);
    	glVertex3f(skeletonData[42], skeletonData[43], skeletonData[44]);
    
    	glEnd();
    	glFlush();
    
    	//使用双缓冲技术
    	glutSwapBuffers();
    }
    
    void readdata(string &filename, vector< vector<float> > &skeData)
    {
    	skeData.clear();
    	ifstream infile(filename.c_str());
    	string temp;
    	int j = 0;
    	vector<float> tmp;
    	skeData.push_back(tmp);
    	while (getline(infile,temp))
    	{
    		cout<<temp<<endl;
    		string xx;
    		string yy;
    		string zz;
    
    		if (temp.size()>20)
    		{
    
    			int pos1 = temp.find(' ');
    			int pos2 = temp.find(',');
    			xx = temp.substr(pos1,10);
    
    			string str = temp.substr(pos2+1,temp.size());
    
    			pos1 = str.find(',');
    			yy = str.substr(0,pos1);
    
    			zz = str.substr(pos1+1,str.size());
    
    			skeData[j].push_back(atof(xx.c_str()));
    			skeData[j].push_back(atof(yy.c_str()));
    			skeData[j].push_back(atof(zz.c_str()));
    			i = i+3;
    		}
    		if(i == 45)
    		{
    			i = 0;
    			j++;
    			vector<float> tmp1;
    			skeData.push_back(tmp1);
    		}
    
    
    	}
    	skeData.pop_back();
    	infile.close();
    }
    void myIdle()
    {
    	if(frameidx >= frames.size())
    	{
    		frameidx = 0;
    	}
    	myDisplayLine();
    	frameidx++;
    	
    	Sleep(30);
    }
    int _tmain(int argc, _TCHAR* argv[])
    {
    
    	string filename("video1.txt");
    	//cin>>filename;
    
    	readdata(filename, frames);
    
    	glutInit(&argc,argv);
    	glutInitDisplayMode(GLUT_RGB |GLUT_DOUBLE);
    	glutInitWindowPosition(100,100);
    	glutInitWindowSize(500,500);
    	glutCreateWindow("openGL 显示三维坐标信息");
    
    	glutDisplayFunc(&myDisplayLine);
    
    	glutIdleFunc(&myIdle);
    	//利用定时器可以实现和函数flutIdleFunc相同的功能
    	//glutTimerFunc(500,timerProc,1); 
    	//SetupRC();
    	glutMainLoop();
    	return 0;
    }


     

    展开全文
  • 实习第一个任务其中的一个小步骤是将三维点云转换成二维图像,今天刚好复习PCL的点云滤波部分,发现了一个具有类似功能的平面模型投影滤波——ModelCoefficients 平面参数模型的形式是:ax+by+cz+d=0 其中的a、b、...

    实习第一个任务其中的一个小步骤是将三维点云转换成二维图像,今天刚好复习PCL的点云滤波部分,发现了一个具有类似功能的平面模型投影滤波——ModelCoefficients 

    平面参数模型的形式是:ax+by+cz+d=0

    其中的a、b、c、d可以设置,具体代码如下:

    #include <iostream>
    #include <pcl/io/pcd_io.h>
    #include <pcl/point_types.h>
    #include <pcl/ModelCoefficients.h>
    #include <pcl/filters/project_inliers.h>
    #include<pcl/visualization/cloud_viewer.h>
    int main()
    {
    	pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
    	pcl::PointCloud<pcl::PointXYZ>::Ptr cloud2(new pcl::PointCloud<pcl::PointXYZ>);
    	pcl::io::loadPCDFile("newdemo.pcd", *cloud);
    	//定义模型系数对象coefficients并填充数据
    	pcl::ModelCoefficients::Ptr coefficients(new pcl::ModelCoefficients());
    	//参数模型为 ax+by+cz+d=0
    	// z=0 即为x-y得一个平面
    	coefficients->values.resize(4);
    	coefficients->values[0] = 0;
    	coefficients->values[1] = 0;
    	coefficients->values[2] = 1.0;
    	coefficients->values[3] = 0;
    	//创建投影滤波对象
    	pcl::ProjectInliers<pcl::PointXYZ> proj;
    	proj.setModelType(pcl::SACMODEL_PLANE);
    	proj.setInputCloud(cloud);
    	proj.setModelCoefficients(coefficients);
    	proj.filter(*cloud2);
    	pcl::visualization::CloudViewer viewer("点云");
    	viewer.showCloud(cloud2);
    	system("pause");
    	return 0;
    
    }

    原始的三维点云效果图:

    投影到Z=0也就是X-Y平面上的图:

    也许我的这个理解不对,以后会随着学习改正的。

    展开全文
  • 三维 CAD转换二维图纸方法
  • 上一篇的三维转换成二维图像应该说是三维点云投影到二维平面上,点云投影并不能达到项目要求,我们需要转换完成的二维图像可以看到每个点的深度,即用灰度图颜色的深浅来表是原点云数据的深度程度。 利用pcl库读取...

    上一篇的三维转换成二维图像应该说是三维点云投影到二维平面上,点云投影并不能达到项目要求,我们需要转换完成的二维图像可以看到每个点的深度,即用灰度图颜色的深浅来表是原点云数据的深度程度。

    利用pcl库读取pcd点云文件,并结合opencv,将在三维中表示深度的z经过一定的变换得到图像中每个像素点的灰度值。

    部分代码如下:

    for (int i = 0; i < row; i++)
    {
    	for (int j = 0; j < col; j++)
    	{
    		Image.at<cv::Vec3b>(i, j)[0] = (cloud->points[k].z / 12.13) * 255;
    		Image.at<cv::Vec3b>(i, j)[1] = (cloud->points[k].z / 12.13) * 255;
    		Image.at<cv::Vec3b>(i, j)[2] = (cloud->points[k].z / 12.13) * 255;
    		k++;		
    		cout << k << endl;
    	}	
    }

    转换完成的图像:

     由图可以清楚的看清车头、车尾以及线缆的大体位置,与三维点云图可以对比一下:

    得到二维图像,相比较处理三维点云,更加容易获取每个线缆的位置和尺寸。

    虽然这些都是比较简单的处理操作,但是完成任务还是非常自豪的,学习带给我的满足感油然而生,继续加油!

    展开全文
  • numpy中reshape()函数对三维数组进行转换成二维数组,见下面例子:1 >>>a=np.reshape(np.arange(18),(3,3,2))2 >>>a3 array([[[ 0, 1],4 [ 2, 3],5 [ 4, 5]],67 [[ 6, 7],8 [ 8, 9],9 [10, 11]]...

    numpy中reshape()函数对三维数组进行转换成二维数组,见下面例子:

    1 >>>a=np.reshape(np.arange(18),(3,3,2))2 >>>a3 array([[[ 0, 1],4 [ 2, 3],5 [ 4, 5]],6

    7 [[ 6, 7],8 [ 8, 9],9 [10, 11]],10

    11 [[12, 13],12 [14, 15],13 [16, 17]]])14 >>>a=reshape(a,(-1,3))15 >>>a16 array([[ 0, 1, 2],17 [ 3, 4, 5],18 [ 6, 7, 8],19 [ 9, 10, 11],20 [12, 13, 14],21 [15, 16, 17]])22

    23 >>>a=np.reshape(np.arange(18),(2,3,3))24 >>>a25 array([[[ 0, 1, 2],26 [ 3, 4, 5],27 [ 6, 7, 8]],28

    29 [[ 9, 10, 11],30 [12, 13, 14],31 [15, 16, 17]]])32 >>>a=np.reshape(a,(-1,3))33 >>>array([[ 0, 1, 2],34 [ 3, 4, 5],35 [ 6, 7, 8],36 [ 9, 10, 11],37 [12, 13, 14],38 [15, 16, 17]])

    易见,对reshape()里面的数组形状第一个为-1,第二个为第二维元素的数目。那么就会对原来的所有元素进行一个平均分配得到一个二维数组。

    展开全文
  • 三维坐标转换二维坐标

    千次阅读 2020-04-06 17:03:01
    如下图所示,将二维平面上的三维坐标系O-X’Y’Z’转换二维坐标系O-XY。 目的 可以在二维平面上绘制三维立体图。 ## 标题公式 假设在三维坐标系中有一点A(x’,y’,z’),转换二维坐标系中的A’(x,y)。 根据向量...
  • conona 将二维图片转换三维

    热门讨论 2010-05-04 16:40:21
    conona将二维图片转换三维,当要具体添加一些图片时,同学们可以拍一些图片,加载到这软件中,就直接可以以三维角度观看。
  • 今天小编就为大家分享一篇python将三维数组展开成二维数组的实现,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 左手坐标系:伸出左手,让拇指和食指“L”形,大拇指向右,食指向上,中指指向前方。这样我们就建立了一个左手坐标系,拇指、食指和中指分别代表X、Y、Z轴的正方向。 左手法则:左手握住旋转轴,竖...
  • opengl的三维二维转换

    千次阅读 2015-09-28 20:32:37
    实际上,从三维空间到二维平面,就如同用相机拍照一样,通常都要经历以下几个步骤 (括号内表示的是相应的图形学概念):  第一步,相机置于三角架上,让它对准三维景物(视点变换,Viewing Transformation)。...
  • AutoCAD中三维实体转换二维投影图的方法,唐月撵,,进行三维造型设计、用二维平面投影图来表达空间三维实体形状是工程图学课程的任务。介绍了在AutoCAD软件中进行三维实体造型的过程�
  • 本文讲述了如何斜孔三维位置度转换机床加工斜孔的二维坐标系输出评价。 1.斜孔位置度测量方法解析 对于斜孔口有个斜面的斜孔,而斜孔的位置标在斜孔与斜面的交点,不少人会直接测量斜圆柱和斜面,用斜圆柱刺穿斜面...
  • 如何将三维地理坐标如(388691,4103865,4300)的(X,Y,Z)类型的坐标转化为在视口中能够被看见的地理坐标,在OpenGL中虽然可以转化,但是通过缩放之类的操作之后并没有成功,还是图形或者点画在视口的范围之外,在...
  • python将三维数组展开成二维数组

    万次阅读 2019-01-12 23:24:11
    以前写过一篇:python两个二维array叠加成三维array的实现方法 ,尝试用“曲线救国”的方法来解决二维数组叠加成三维数组的问题。 但是,天道有轮回,苍天绕过谁。好不容易把数组叠加在一块儿了,新的需求又出现...
  • 前面记录的将三维模型转换成点云的方法(.STL转换成.pcd)效果不好。哪种方法只能提取到三维模型的边缘或显著特征转换成点云。本文记录一种实现均匀采样的点云数据的方法。 一、准备数据 (1)在SolidWorks里画的...
  • python多个二维array转换成三维的方法

    千次阅读 2020-09-25 16:23:33
    对于两个(或者多个)同一维度的矩阵,直接利用np.array()重新构造一个array,这样可以变相起到扩展数的作用。例如: import numpy as np a = np.array([[1,2,3],[4,5,6]]) b = np.array([[2,2,3],[4,5,6]]) c = ...
  • 代码中添加依赖库 #pragma comment(lib,"User32.lib") 并项目属性->General->Use of MFC改为Use Standard Windows Libraries. // CloudToDepth.cpp : Defines the entry point for the console application. // /...
  • 在进行数据处理时,常常用到将二维线数据集转换三维线数据集,本范例示范如何利用二维线数据集和DEM数据集生成三维线数据集,并将三维线添加至场景。
  • 如何将三维图转化成二维

    千次阅读 2020-12-18 15:24:44
    下面以某一构件为例,讲解三维转换二维图的步骤 1.先打开要转换的三维图,再点击新建,选择工程图,确定。选择图纸格式的时候你可以随便选,或者是取消 2.在左侧就出现了那个三维图形的名称,你可以双击这个名字...
  • 二维数组或三维数组转为一维数组 1.二维数组转换为一维数组: 设二维数组a[i][j],数组a行数x行,列数y列; 一维数组b[n],数组b最多存储m=x*y个元素。 令x=3,y=4则:m=12 此时,数组a中元素的位置序号(i j)为: 00 ...
  • 我们用matlab进行二维三维成图的时候,经常涉及到网格填色,色彩数据来源于二维三维矩阵,为了得到较好的图效果,必须知道二维三维矩阵编号的方式,以及matlab数据间相互转换的方式,为此本文深入研究了...
  • Arx: AcdbPolyline的二维三维转换矩阵

    千次阅读 2013-09-25 09:07:07
    AcdbPolyline的GetPointAt有两个:一个是获取二维点坐标(In OCS),一个是获取三维点坐标(In WCS) Acad::ErrorStatus getPointAt( unsigned int index, AcGePoint2d& pt) const; This function sets pt to the 2D ...
  • Python:使用 pyts 把一维时间序列转换成二维图片

    万次阅读 多人点赞 2019-05-04 23:15:00
    在之前的一篇博客 —— 一维时间序列转化成二维图片中,我翻译了一篇文章,说的是一个时间序列信号转换成二维图片: 然后在文章的最后发了一个 Github 代码,这个代码是原文作者的代码,有人反应代码不能跑起来...
  • SuperMap组件开发二三维联动的坐标转换问题 超图组件开发包supermap-iobjectsdotnet-9.0.1-15628-65435-all\SampleCode\Realspace\AssociatingMapAndScene目录demo演示了同一地理坐标系下的二三维联动问题。效果如下...
  • numpy中三维数组转变成二维数组

    万次阅读 2018-08-16 14:28:25
    numpy中reshape()函数对三维数组进行转换成二维数组,见下面例子: 1 &gt;&gt;&gt;a=np.reshape(np.arange(18),(3,3,2)) 2 &gt;&gt;&gt; a 3 array([[[ 0, 1], 4 [ 2, 3], 5 [ 4...
  • shp三维面转成二维

    千次阅读 2020-04-22 16:44:56
    shp三维面转成二维面,介绍一下两种方法,一种使用arcmap,另一种使用supermap。 一、arcmap 已有的三维shapefile导入ArcMap。 打开ArcToolbox,Data Management Tools > Feature Class > Create Feature ...
  • 有段时间没写过关于OCC的文章,前段时间在以前写过的一篇文章介绍鼠标点转换为OCC三维坐标,在一位博友的提示中,以另外一种方式实现,这种方法就是先构造一条过鼠标点的并且垂直于屏幕的一条线,然后求该直线与某...
  • 1.一维数组转二维数组 /// <summary> /// 一维数组转2维数组(矩阵) /// </summary> /// <param name="obj"></param> /// <param name="len">矩阵行数</param> /// <...
  • 二维“数组”转换成二维“指针”

    千次阅读 2018-10-12 13:21:50
    今天写函数时遇到了一个问题,怎么返回二维数组? 想法:直接返回值定义为二级指针,将二维数组与二级指针转化,想了想发现根本不可行。二级指针和二维数组并不等价。 查找了下资料,发现了论坛...
  • 1、matlab二维转换三维矩阵 这里用到reshape函数 格式为AA1=reshape(A1,[行,列,页]) 如下所示 A1=[2 2 2 2 2.5 2.5 2.5 2.5 1.8 1.8 1.8 1.8 2.2 2.2 2.2 2.2 2 2 2 2 1.8 1.8 1.8 1.8 2.1 2.1 2.1 2.1 2 2 2 2 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 194,451
精华内容 77,780
关键字:

怎样将三维转换成二维