如何在Kinect V2中使用matlab或C#将颜色流(1920x1080)转换为深度流(512x424)?
Kinect V2颜色流支持格式为:1920x1080.但是Kinect V2深度流格式为:512x424.现在,当我开始使用两个传感器的Live Steam时,由于分辨率不同,它们的尺寸不同.我无法调整它们的大小,因为我需要坐标.因此,当我使用Imresize()调整大小时,坐标不匹配.我已经阅读了MATLAB文档.他们说硬件仅支持这两种格式.现在我该如何在代码中执行此操作,以便两个流都具有相同的分辨率.我尝试了两天,但失败了.此外,我想通过任何过程进行此操作,以便我拍摄第一个深度图像,并基于此深度分辨率,它将使用RGB或颜色图像. 我的项目是我从深度图像中获取线条,并在Kinect V2的RGB图像上绘制它们.但是有分辨率不一样.因此,[x,y]脊椎变化了.因此,当我在RGB上映射它时,它与深度图像的坐标不匹配.我该如何解决?我以为我会更改分辨率,但在Kinect V2 Resoution中无法更改.现在我该如何进行编码. 在matlab或c# 解决方案 对于工作示例
14 2024-04-26
编程技术问答社区
高斯滤波器的实现
我准备在C#中实现高斯过滤器,在准备中,我正在阅读有关此的文献.但是我不同意来源. 一本书(日语文本:Uchimura的实用图像处理简介)指定计算模板的方程式 w(u,v)= (1/2*pi*sigma^2) exp(-(x^2+v^2)/(2*sigma^2)). 我认为这是正确的,尽管作者将大小和sigma链接为SIZE = 3*sigma. . 最后一本出色的书(尼克松和阿瓜多(Nixon and Aguado)的计算机视觉处理功能提取和图像处理,第106页)给出了正确的方程式,但是当在代码中实施它时,会提供不同的实现. w(u,v)= (1/SUM)* exp(-(x^2+v^2)/(2*sigma^2)) 其中SUM是指数的所有值的总和.以下是他们提供的伪代码 - 我认为它靠近MATLAB. function template=gaussian_template(winsize,sigma) %Template for Gaussian
26 2024-04-25
编程技术问答社区
通过C#应用程序控制Matlab实例
背景 我有几个MATLAB脚本,可以与用户创建交互式会话(有点像游戏),我想创建一个C#GUI作为前端来启动这些脚本,而不是手动在Matlab的命令窗口中键入.原因是这些脚本被分为不同的目录,并且需要几个输入参数,其中许多是用户相同的. . 问题描述 我的主要问题是如何与MATLAB实例进行通信?我对来回传递数据不感兴趣;相反,我想将1个命令发送给MATLAB,然后让它做它的事情.一个例子是: cd('D:\Script1\'); fnScript1(0, true, 'default') %command for Matlab to execute 我计划的方法是: 在GUI侧生成命令,然后复制到剪贴板 使用setForegroundWindow()将重点放在matlab 将重点放在命令提示符上 使用sendkeys.send("^v")从剪贴板粘贴命令 使用sendkeys.send(" {enter}") 执行命令 我对这种方法的
34 2024-04-25
编程技术问答社区
向MATLAB传递一个.NET数据集
我正在为MATLAB组件构建接口层,该界面用于分析由我也正在构建的单独的.NET应用程序维护的数据.我试图将.NET数据序列化为要传递到MATLAB组件的数字阵列(作为更概括的序列化例程的一部分). 到目前为止,我在传递数字数据的表方面取得了合理的成功,但是在尝试添加Datatype DateTime列时,我已经遇到了一个障碍.我现在一直在做的是将从DataTable的值塞入一个双阵列中,因为Matlab只真正关心双打,然后直接将其直接铸造到MWNumericArray上,这本质上是矩阵. 这是当前代码; else if (sourceType == typeof(DataTable)) { DataTable dtSource = source as DataTable; var rowIdentifiers = new string[dtSource.Rows.Count]; // I know this loo
14 2024-04-25
编程技术问答社区
使用C#自动编辑word文档
我有一个带有自己的模板的finalreport.docx,我实际上是手动编辑的:标题,一些段落和某些表的内容是从其他MATLAB文档中获取的,例如File1.m,file2. M,等 最后,我需要更新FinalReport索引. 我想自动执行此操作,也许使用C#或VBA.有什么建议吗? 解决方案 您可以使用Microsoft.office.interop.word namespace编辑Word文档. Google可以找到有关该主题的教程(这是一个).它重新安装了MS Word,如果您首先在同一台计算机上完成手动步骤,我认为这不是问题.它使用com接口来控制单词. 对于此类简单事物而言,它比打开的XML SDK更容易,但是开放的XML SDK可以更好地用于高级操作(例如,在服务器上创建报告). SDK不需要您安装MS Word. vba也可以用来做到这一点,这对初学者来说会更好,因为您可以使用宏观记录器使您开始启动,然后手动编辑它生成的vba,以添加您无法与您无法使用
18 2024-04-25
编程技术问答社区
将C#对象[]传递给Matlab Dll方法
我试图使用参数数组params关键字将C#对象数组传递到MATLAB方法.我的MATLAB方法符合.NET组件DLL.这是我的简单C#方法: public void Method1(params object[] objArg) { _mMExt.mMethod1((MWArray[])objArg); } 我正在使用varargin作为我的matlab函数mmethod1的输入1: function mMethod1(varargin) nVarargs = length(varargin); end 问题是我通过这样做将对象[]转换为mwarray []: (MWArray[])objArg 看来我可以使用(Mwarray)对象1将C#对象转换为Mwarray,但是它不允许我将对象数组转换为Mwarray数组. 这可能吗?如果是这样,如何? 预先感谢. 解决方案 这是我测试的小例子. 说,您
20 2024-04-25
编程技术问答社区
从C#中使用C++ dll
我有一个c#gui,还有我在matlab中编译的dll,用于c ++. 我想从我的C#代码致电DLL函数. 我首先尝试将C#代码转换为CLI,但不建议将其转换为CLI. 我可以使用2个项目创建一个解决方案 - 一个是C#GUI和一个 - 用C ++代码包装C ++ DLL,然后从C#? 调用它 任何参考都将不胜感激. 谢谢 解决方案 您可以使用[DllImport]属性在c#中使用c ++ dll,在此 msdn thread .
26 2024-04-25
编程技术问答社区
去麦当劳的结果?
这是此问题返回数组而不是标量. 通过MATLAB代码器从MATLAB代码中产生的C代码现在看起来还不错(请参见下文).我只是试图弄清楚如何将结果恢复到C#世界.这是我的第一次尝试: c#代码 [DllImport(@"C:\bla\CPlusPlus.dll", CallingConvention = CallingConvention.Cdecl)] private static extern void test(ref emxArray_real_T a, ref emxArray_real_T result); static void Main(string[] args) { double[,] array2D = new double[,] { { 1, 2, 4 }, { 1, 3, 4 } }; var wrapper = new EmxArrayRealTWrapper(array2D); var t = wrapper.Va
12 2024-04-24
编程技术问答社区
将MATLAB方法作为代表传递给.NET对象
目前,我使用.NET库MATLAB项目.在MATLAB中,我在.dll中读取并实例化了我开发的.NET对象,并传递了与之传递的数据: NET.addAssembly('myLibrary.dll'); myNetObj = myNamespace.MyClass(); myNetObj.DoWork(someMatlabVariable); 遵循MATLAB文档(请参阅在这里)我可以将变量传递给我的.NET函数,但是我想将.NET代码调用MATLAB方法/回调.该文档清楚地定义了如何使用.NET代表MATLAB为.NET代表(请参阅在这里). 是否可以将(指向)MATLAB函数作为.NET委托或操作传递,因此我可以从.NET对象调用回调? 解决方案 我找到了如何将MATLAB函数手柄传递给C#中的委托.答案被埋葬在 matlab .net文档. P> in .net/c#代码: namespace SomeNamespace{ // Create D
56 2024-04-24
编程技术问答社区
使用Matlab dll时,在Windows Store应用中无法在模块mscorlib.dll中找到System.ApplicationException类型的错误。
我正在制作一个图像处理应用程序,以供自己使用,我不想将其放在商店中.我想在该Windows Store应用程序中使用我的预设计的MATLAB代码.在我的项目中使用DLL时,它显示错误 - Cannot find type System.ApplicationException in module mscorlib.dll 解决方案 此例外的最可能原因是您参考或其依赖关系不受Winrt 支持 尝试使用LoadPackagedLibrary或GetProcAddress加载DLL.如果您不能使用Winrt SDK进行编译.
22 2024-04-23
编程技术问答社区
编译的Matlab函数只工作一次
我在C库中有一个MATLAB函数.我正在使用C#应用程序中的此库. 如果我第一次在C库中调用我的函数,则一切正常,但是第二个呼叫会导致例外-MLFMYFUNC返回null指针将指针设置为结果(output1和output2 parameters即使在mlfmyfunc呼叫之后,也是intptr.zero) 我的DoubleArray类(围绕mx...函数包装器),经过了很好的测试,我认为它可以正常工作. 您知道问题可能在哪里吗? 谢谢.卢卡斯 c#代码: using Native; class MatlabAlgosBridge { [DllImport("Algos.dll"] private static extern bool AlgosInitialize(); [DllImport("Algos.dll")] private static extern void AlgosTerminate(); [Dl
12 2024-04-23
编程技术问答社区
在Matlab中创建一个共享库(.NET程序集)并在C#中使用它
我已经使用应用程序编译器在Matlab(2014a)中创建了.NET组件,我正在尝试在C#下使用它. MATLAB模块只有1个函数: function [ val ] = AnalyzePicture( arg1 ) val = 5; end 导出的.NET DLL命名为AnalyzePicture.dll和Exports class1(如MATLAB应用程序编译器中定义). 但是,当我尝试初始化它时,我会得到一个例外说: The type initializer for 'MathWorks.MATLAB.NET.Arrays.MWArray' threw an exception 内部例外说: An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B) 这是代码 using System; usin
18 2024-04-23
编程技术问答社区
如何使用Word自动化获取页面的范围
您如何使用Office Automation在Microsoft Word中找到N的范围?似乎没有getPagerange(n)函数,目前尚不清楚它们是如何分配的. 解决方案 这是您从VBA进行操作的方式,转换为MATLAB COM呼叫应该相当微不足道. Public Sub DemoPerPageText() Dim i As Integer Dim totalPages As Integer Dim bmRange As Range totalPages = Selection.Information(wdNumberOfPagesInDocument) For i = 1 To totalPages Set bmRange = ActiveDocument.Bookmarks("\Page").Range Debug.Print CStr(i) & " : " & bmRange.Text & vb
12 2024-04-23
编程技术问答社区
如何使用切片在圆柱形网格上绘制数据?
我在圆柱网格上具有输入数据,并希望在MATLAB中使用slice绘制它们. 为此,我首先使用pol2cart. r = linspace(1,4,4); phi = linspace(0,2*pi,10); z = linspace(1,3,3); [rmesh,phimesh,zmesh]=meshgrid(r,phi,z) [xmesh,ymesh,zmesh]=pol2cart(phimesh,rmesh,zmesh) 当我使用slice现在(例如slice(xmesh,ymesh,zmesh,ones(10,4,3),2,2,2))时,会出现错误,因为坐标矩阵未正确排序(Input grid is not a valid MESHGRID.) 如何修改矩阵以获得可绘制的结果? 解决方案 可悲的是,您无法使用圆柱坐标中给出的数据用于使用切片. 来自MATLAB文档: slice(X,Y,Z,V,sx,sy,sz) draws slices
20 2024-04-23
编程技术问答社区
如何在 MATLAB 中锁定图像尺寸
所以我在MATLAB中有这个矩阵,x 600宽度200.它代表一个深x 6厘米宽的图像.如何绘制此图像以使其锁定成适当的尺寸,即2cm x 6cm?如果我使用 image 或 imagesc 命令,它将其伸展到整个形状,并显示出错误的大小.有没有办法将其锁定以显示X和Y轴成比例的图像? 第二个问题,然后我需要将此图像设置为一个640x480帧(左右280像素黑色边距为20像素距离,底部为280像素黑色边距).有办法这样做吗? 解决方案 要保持纵横比,您可以使用axis equal或axis image命令. 引用文档: axis equal设置纵横比,使数据单元在各个方向上相同. X,Y和Z轴的纵横比根据X,Y和Z方向的数据单元的范围自动调整. axis image与轴相同,除非绘图框紧密地符合数据 第二个问题: third_dimension_size=1; %# for b&w images, use 3 for rgb framed_im
14 2024-04-22
编程技术问答社区
模拟 MATLAB 中的 s 函数
我收到消息 s功能中的错误'project1_simu/s功能':s-函数'chiu_sfcn'不存在 每当我运行包含s功能框图的simulink文件时.解决此问题的任何提示? 解决方案 您需要使用MEX编译S函数. 然后,MEX32输出文件需要在MATLAB路径上. 其他解决方案 对于S功能,您需要确保您的C,MATLAB或FORTRAN代码是Simulink期望的.我的猜测是您的代码存在,但不在Directory Simulink期望中. 右键单击Simulink项目中的S功能块 - >选择S-功能参数. 单击s功能名称旁边的编辑按钮. 它可能会告诉您找不到s功能源.然后,它将提示您浏览代码或打开编辑器. 如果您无法弄清楚此文件的位置,并且拥有代码,则最好的选择是从此对话框打开编辑器. 从那里粘贴代码并将其保存为" chiu_sfcn".您无需将文件扩展名或浏览到其他文件夹.它应该自动将其保存在正确的文件夹中. 其
26 2024-04-22
编程技术问答社区
将 c 文件转换为 simulink 模型
我有大量的.c文件,该文件由Simulink编码器自动化.分析这些文件以了解Simulink模型是一定耗时的,据我所知,没有将C代码转换为Simulink模型的反向工具. 因此,是否有可能使用任何解析器将自动生成的C文件转换为模型? 解决方案 有一些研究喜欢这个区域,但是我知道将一般C代码转换为模型的任何方法.我听说过的"最佳"性能是可以使用的,并且不再可用的原型,该原型从某些C代码行中产生了令人难以置信的巨大模型. 在您的用例中具有任何实际用途,需要识别原始型号块的翻译器.这样的软件不存在. 其他解决方案 简短答案:否 真正的问题是:您为什么要这样做?黄金引用(如果需要的话)是代码生成的模型,它是一个单向系统.如果要更改设计,请更改模型,重新生成代码.这就是它的设计和打算工作的方式,而不是相反. 但是,您可以将C代码(函数)集成到simulink模型中旧式代码工具,但这与您的要求不同.您还可以使用MATLAB函数块和coder.ceval命令从s
46 2024-04-22
编程技术问答社区
在 MATLAB 中绘制符号变量时出错?
我试图从书籍"信号和系统实验室使用Matlab Alex Palamides"中学习傅立叶变换. 在第312页上,给出了以下代码,该代码表明可以通过乘以两个信号的傅立叶变换,然后将产品的反傅立叶进行 来实现卷积. syms t w x1=heaviside(t)-heaviside(t-2); x2=heaviside(t)-heaviside(t-4); X1=fourier(x1,w); X2=fourier(x2,w); right=ifourier(X1*X2,t) ezplot(right) 我尝试了MATLAB 2019和MATLAB 2020,但我在这两个方面都有同样的问题 实际上,当我尝试在MATLAB中以上代码运行时,我不会像书中的那个输出一样,相反,我会遵循错误 Error using inlineeval (line 14) Error in inline expression ==> (t.*pi.*sign(t) + fourier(c
24 2024-04-22
编程技术问答社区
我怎样才能在编译的.NET程序集中使用Matlab对象?
我有一个基本的MATLAB类,我想在C#中实例化. classdef MyClass properties Value end methods function obj=MyClass(v) obj.Value = v; end function display(obj) disp(obj.Value); end end end 然后将其内置到.dll文件中,并与关联的MATLAB名称空间(Mathworks.matlab.net.arrays,Mathworks.matlab.net.utility)一起导入在C#项目中. 在C#侧,我试图构建此类的实例化: Untitled2.MLTestClass matlab = new Untitled2.MLTestClass();
16 2024-04-21
编程技术问答社区