[英]How to extract a line of pixels (roi) from video, combined lines in a single .tif image?
我是编程新手,我正在尝试使用ImageJ和Jython从视频中提取一行,并将这些行组合为时间进度。 我正在尝试创建视频影像(即http://www.kymography.com/supp_demo.html )!
我的尝试是这样的:
from ij import ImagePlus, IJ
from ij.process import FloatProcessor
img = IJ.getImage()
roi = img.getRoi()
StackSize = 100 #img.getImageStackSize()
pixels = roi.getPixels()
Length = len(pixels)
Width = 1
total_pixels = [[0] *len(pixels)] * StackSize
t_pixels = []
for j in range (1, StackSize):
img.setSlice (j)
roi = img.getRoi()
pixels = roi.getPixels()
for i in xrange (len(pixels)):
pixels [i] = pixels [i]
total_pixels[j-1] = pixels
fp = FloatProcessor (Length, StackSize,total_pixels)
imp = ImagePlus ("White Noise", fp)
imp.show()
但是它返回:TypeError:ij.process.FloatProcessor():第三个arg不能被强制为double [],int [],float []
有关如何解决该问题的任何提示。 我也许可以迭代附加像素变量的文本文件,但是我不知道该怎么做。 欢迎任何帮助。 顺便说一句,如果您想尝试一下,可以使用斐济的Fly Brain示例。
非常感谢你
您得到的错误表明total_pixels
不是double [],int []或float []类型的数组,这是FloatProcessor
类的任何构造函数都需要的。
在Python中构建Java数组的一种好方法是使用jarray,这是Java数组的Jython模块,如斐济Wiki的Jython脚本文档所述。
我修改了您的代码,这也需要在for
循环中进行一些修复:
from ij import ImagePlus, IJ
from ij.process import FloatProcessor
from jarray import zeros
img = IJ.getImage()
roi = img.getRoi()
stackSize = img.getImageStackSize()
pixels = roi.getPixels()
length = len(pixels)
total_pixels = zeros(length * stackSize, 'f')
for j in xrange (stackSize):
img.setSlice (j+1)
roi = img.getRoi()
pixels = roi.getPixels()
for i in xrange (length):
total_pixels[j*length+i] = pixels [i]
fp = FloatProcessor (length, stackSize, total_pixels)
imp = ImagePlus ("White Noise", fp)
imp.show()
FWIW,其他人已经使用ImageJ来处理运动记录仪:您可以在斐济Wiki上找到教程 ,以及一些产生运动记录仪的插件
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.