小编Dar*_*enW的帖子

将ITK/VTK导入到Matlab或Matlab中进入VTK/ITK环境?

对于当前项目,我必须使用并对基质中提供的信息进行数学化,以及使用ITK/VTK功能来显示医疗信息/渲染.基本上我必须以(我猜)50/50的方式使用matlab例程和VTK/ITK.问题是,由于我必须使用两者,我想提前决定使用哪种方法:

  1. 将ITK和VTK库导入matlab: 为此,您必须构建自己的VTK作为开始.然后,通过这个例子,整个想法是在.mex文件中编写VTK代码.这些文件可以在其中编写c代码作为matlab的函数.

  2. 在ITK/VTK环境中导入matlab函数:为此,我将使用一种语言(可能是python)来进行矩阵计算.我可以利用Numpy.这是一个用于Python的matlab类计算模块,它将vtk数据转换为numpy数据,我可以利用matplotlib制作绘图.

优点/缺点ITK/VTK在MATLAB导入
+容易做MATLAB计算和绘图
+ MATLAB是最强大的工具之一与矩阵的工作
之前有+用MATLAB(主观)

-必须安装有MATLAB
-运行MATLAB负担你的电脑

在ITK/VTK环境中导入的优缺点matlab
+无需安装matlab
+减少PC的应变,并且由于医疗数据集需要很多来自你的电脑,这很好.
在这种情况下已经设置了+ ITK/VTK环境(目前使用这种方式,但从未使用matlab/matrices .mat)

- 听说过以这种方式很难进行matlab计算的故事.有点凌乱.
- 较少的python经验(与matlab 0结合使用)

所以...?总结
实际上,我正在寻找那些在两种环境中工作的人,但是因为我认为有这么几种,我喜欢听到建议在做出最终选择之前要寻找什么.它需要花费大量时间才能以我需要的方式工作,因此尝试两者都是浪费时间(也有截止日期).

额外的注意事项
- 我已经尝试使用Simulink for matlab和VTK/ITK库,但我不喜欢它.
- 虽然问题的解决方案当然是我能够到达的最佳方式,但我也很高兴有经验的人做出与此基本相同的选择.做出这样的选择时需要关注的关键点是什么?我错过了我的优缺点关键点吗?

import matlab development-environment vtk

5
推荐指数
1
解决办法
1万
查看次数

是什么导致PIL fromarray函数中依赖于维度的AttributeError?

我在指定的行中从以下Python3代码中收到错误.x,y和z都是简单的2D numpy数组相同但尺寸相同,应该相同.然而他们的行为不同,y和z崩溃,而x工作正常.

import numpy as np
from PIL import Image

a = np.ones( ( 3,3,3), dtype='uint8' )
x = a[1,:,:]
y = a[:,1,:]
z = a[:,:,1]

imx = Image.fromarray(x)  # ok
imy = Image.fromarray(y)  # error
imz = Image.fromarray(z)  # error
Run Code Online (Sandbox Code Playgroud)

但这很有效

z1 = 1*z
imz = Image.fromarray(z1)   # ok
Run Code Online (Sandbox Code Playgroud)

错误是:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python3\lib\site-packages\PIL\Image.py", line 1918, in fromarray
    obj = obj.tobytes()
AttributeError: 'numpy.ndarray' object has no attribute 'tobytes'
Run Code Online (Sandbox Code Playgroud)

那么x,y,z,z1之间有什么不同?我什么都不知道.

>>> …
Run Code Online (Sandbox Code Playgroud)

python numpy attributeerror python-imaging-library

5
推荐指数
1
解决办法
4048
查看次数

h5py 是否提供了一种简洁的方式来创建或使用组或数据集?

我正在使用 h5py 修复 python 脚本。它包含这样的代码:

hdf = h5py.File(hdf5_filename, 'a')
... 
g = hdf.create_group('foo')
g.create_dataset('bar', ...whatever...)
Run Code Online (Sandbox Code Playgroud)

有时这会在已经有一个名为“foo”的组的文件上运行,在这种情况下,我会看到“ValueError: Unable to create group (Name already exists)”

解决此问题的一种方法是用四行替换带有 create_group 的简单行,如下所示:

if 'foo' in hdf.keys():
    g = hdf['foo']
else:
    g = hdf.create_group['foo']

g.create_dataset(...etc...)
Run Code Online (Sandbox Code Playgroud)

有没有更简洁的方法来做到这一点,也许只有一行?就像标准 C 库中的文件一样,'a' 模式要么附加到现有文件,要么创建一个文件(如果它不存在)。

数据集也是如此 - 我有

create_dataset('bar', ...) 
Run Code Online (Sandbox Code Playgroud)

但应该先检查:

if 'bar' in g.keys():
   d = g['bar']
else:
   d = g.create_dataset('bar')
Run Code Online (Sandbox Code Playgroud)

我的愿望:找到 h5py 有名为 create_or_use_group() 和 create_or_use_dataset() 的方法。什么是实际存在的?

h5py

5
推荐指数
1
解决办法
3339
查看次数

Python Clutter绑定简介?

我已经进行了搜索,但是我找不到最近杂乱绑定的正确在线教程.有大约0.4和0.6的指南,但0.8应该是非常不同的,使这些指南有点无用.链接或示例非常感谢!

python user-interface binding clutter-gui

4
推荐指数
1
解决办法
2880
查看次数

在单步执行期间观看QImage

我正在调试一个包含数百个类,杂乱代码等的巨大Qt应用程序.在追踪错误的同时,我希望单步执行gdb(kdbg,ddd,无论如何),同时观察使用QPainter绘制到QImage中的内容这是从方法到方法的结果.在某个地方,它正在被给予不良信息.通常我只能将最终的QImage写入.png文件.

有什么方法可以在调试器中停止时查看QImage中的图像是什么?

顺便说一句,这是使用Qt4.3,这有点旧,但我们现在仍然坚持.如果一个较新的Qt提供了一些优势,我有办法破解它(以及其他人看到这个问题可能有最新的).

debugging qt qimage

4
推荐指数
1
解决办法
601
查看次数

如何修复Python对象的破坏方法?

在一个交互式的Python会话中,我有时会做一些愚蠢的事情

plot.ylimits = (0,100)
Run Code Online (Sandbox Code Playgroud)

plot是某个Plot类的实例,ylimits是它的一个方法.我本应该用这个:

plot.ylimits(0,100)
Run Code Online (Sandbox Code Playgroud)

Python工作的方式,绘图对象现在有一个名为ylimits的新成员,它将一个元组作为其值,而方法,最初由Plot类提供的可执行子程序,曾经用ylimits(...)调用的是不见了.也许在我脑海中的某个地方,我认为ylimits是一个属性,并且分配给它会调用一些隐藏的setter方法,就像在其他一些语言中所做的那样.

我怎样才能找回那种方法?如何修复我的绘图对象,同时保持在交互式会话中我还有许多其他变量,函数等?

我发现重装(theplotmodule)不起作用.我破坏了Plot的一个特定实例; 刷新Plot类的定义和其他东西没有帮助.

我正在使用Python 2.7

python methods object

4
推荐指数
1
解决办法
136
查看次数

如何在一个Gadfly图中过度绘制多个数据数组?

我正在使用Gadfly在Julia中绘制数据.我有x =一个浮点数组,以及几个匹配长度的y1,y2,y3 ...... 如何在一个Gadfly图中以绿色,(x,y2)以红色等绘制所有点(x,y1)?

plot julia gadfly

4
推荐指数
1
解决办法
2903
查看次数

如何避免"数学".在C#的每个数学函数面前?

我正在写一些C#重数学.许多行依次使用大量的abs(),min(),max(),sqrt()等.使用C#是普通的常规方法,我必须在每个函数前加上"Math".例如

double x = Math.Min(1+Math.Sqrt(A+Math.Max(B1,B2)),
           Math.Min(Math.Cos(Z1),Math.Cos(Z2)));
Run Code Online (Sandbox Code Playgroud)

我宁愿像C一样编写代码:

double x = min(1+sqrt(A+max(B1,B2)), min(cos(Z1), cos(Z2)));
Run Code Online (Sandbox Code Playgroud)

这更容易阅读,对科学家和工程师来说看起来更自然.正常的C#方式隐藏了"数学"迷雾中的好位.

C#中有没有办法做到这一点?

经过一些谷歌搜索后,我找到了一个让我尝试的例子

using min = Math.Min;
...
double x = min(a,b);        
Run Code Online (Sandbox Code Playgroud)

但是"using"语句产生了一个错误,"System.Math.Min(十进制,十进制)是一个方法但是像一个类型一样使用"但是这看起来像是一个很好的解决方案.(无论如何,'小数'是什么?)

c# readability using simplify

4
推荐指数
3
解决办法
707
查看次数

Julia的findlast()函数在哪里?

使用Julia 0.3.8,我试试这个:

julia> t = [0 0 0 1 1 1 0 0 ]
1x8 Array{Int64,2}:
 0  0  0  1  1  1  0  0

julia> findfirst(t)
4

julia> findlast(t)
ERROR: findlast not defined
Run Code Online (Sandbox Code Playgroud)

根据http://julia.readthedocs.org/en/latest/stdlib/arrays/ findlast()存在,与之相比没什么特别之处findfirst().

那么findlast()未定义的是什么?该怎么做?

arrays julia

4
推荐指数
1
解决办法
458
查看次数

为什么 matplotlib 中的图例在 `savefig()` 之后没有自行清除?

我正在交互地使用 Python 3.6。如果我将下面的代码从文本文件粘贴到 Python 命令行中,它可以连续多次正常工作。然而,当注释掉show()并启用该pp.savefig(...)行时,每次我粘贴整个代码块时,图例都会重复“abc”几次。到底是怎么回事?有没有办法清除图例,以便每次都重新开始?

import matplotlib.pyplot as pp

pp.title("Szekeres Polynomials")
pp.legend([]) # clears the legend? no!
pp.plot([1,2,3], [8,5,4], '-', label='xxxabc' )
pp.legend(loc='best', shadow=True )
#pp.show()
pp.savefig('TMPxxx.eps', format='eps', dpi=600)
Run Code Online (Sandbox Code Playgroud)

python matplotlib legend python-3.6

4
推荐指数
1
解决办法
2185
查看次数