にキャストできません。フィジーの画像を操作するためのjythonスクリプトを作成しています。具体的には、JFilamentプラグインのクラスのサブセット(TwoDContourDeformationとIntensityEnergy、https://github.com/odinsbane/jfilament/tree/master/src/main/java/snakeprogramを参照)を実装して、セルのアウトラインを追跡しようとしています。フィジーでJythonを使用してJavaプラグインを実行中:例外java.lang.Doubleは[D
私は正常にTwoDContourDeformationオブジェクトを構築することができるよ、私は私の物にaddSnakePointsメソッドを呼び出すしようとすると、しかし、私は一貫して、次の例外を受け取る: とjava.lang.ClassCastException:java.lang.ClassCastExceptionが:java.langでの.Doubleはキャストすることができません[D
この例外は一般に、Doubleオブジェクトを、それらの型を受け入れるように構成されていない配列またはクラスにロードしようとしていることを意味します。ただし、TwoDContourDeformationクラス内のaddSnakePointsメソッドで、Doubleオブジェクトの場所や場所、エラーが発生している場所は不明です。ここに私のコードです:
#IMPORTS
import java.util
from ij import IJ
from snakeprogram import IntensityEnergy
from snakeprogram import TwoDContourDeformation
#CONSTANTS
initial_parameters = java.util.Arrays.asList()
initial_parameters.add(1.0)
initial_parameters.add(2000.0)
initial_parameters.add(40.0)
initial_parameters.add(1.0)
initial_parameters.add(10.0)
initial_parameters.add(1000.0)
initial_parameters.add(1.0)
tracking_parameters = java.util.ArrayList()
tracking_parameters.add(1.0)
tracking_parameters.add(2000.0)
tracking_parameters.add(40.0)
tracking_parameters.add(1.0)
tracking_parameters.add(10.0)
tracking_parameters.add(5.0)
tracking_parameters.add(3.0)
def set_parameters(deform, initial_parameters):
deform.setAlpha(initial_parameters[0])
deform.setBeta(initial_parameters[1])
deform.setGamma(initial_parameters[2])
deform.setWeight(initial_parameters[3])
deform.setStretch(initial_parameters[4])
return None
def set_parameters_deform(edges, outline, num_slice, initial_parameters, tracking_parameters):
'''
Sets parameters for JFilament and deforms snake around cell edges
Inputs:
edges: ImagePlus, binary image stack
outline: java.util.ArrayList, x coordinates for the initial snake
num_slice: int, initial frame of the image stack
initial_parameters: java.util.ArrayList, list of starting parameters
tracking_parameters: java.util.ArrayList, list of parameters for tracking through all frames of the image stack
Returns:
outline: java.util.ArrayList, list of java.util.ArrayList. Length is equal to number of frames
'''
deform = TwoDContourDeformation(outline, IntensityEnergy(edges.getProcessor(), 1.0))
if num_slice == 1:
set_parameters(deform, initial_parameters)
for i in xrange(initial_parameters[5]):
try:
deform.addSnakePoints(initial_parameters[6])
#the above line is where the Exception is thrown
deform.deformSnake()
except ValueError:
IJ.log('snake failure')
set_parameters(deform, tracking_parameters)
for i in xrange(initial_parameters[5]):
try:
deform.addSnakePoints(tracking_parameters[6])
deform.deformSnake()
except ValueError:
IJ.log('snake failure')
return outline
edges = IJ.getImage()
x_coords = [49.71320343559643, 49.702736000251505, 49.67134402431167, 49.619058487867186, 49.54593099043001, 49.45203370001131, 49.33745928190039]
#length of x_coords list shortened for brevity
jx = java.util.ArrayList()
for x in x_coords:
jx.add(float(x))
set_parameters_deform(edges, jx, 1, initial_parameters, tracking_parameters):
ありがとうございました!
申し訳ありませんが、この点はx座標だけではなく、名前は遺産の一部です。私はそれを修正するために少し取る必要があります。彼らは長さが2倍になる必要があります。 – matt