用mathematica,对于一张二值图,怎么把所有1的坐标保存到一个数组里

得到数组后,我想通过数组,在坐标轴上得到相应的图像。如何得到这个数组

以下面的二值图来简单的进行说明,

首先将图像导入,

tuxiang = Import["F:\\Figure.png", "Data"];

接下来找到图像中白颜色的位置,也就是二值图像中 1 的坐标,这里选用函数Position,

zuobiao = Position[tuxiang, 1];

那么变量 zuobiao 即为保存所有位置1的数组,当然还可以在坐标轴上得到相应的图像。

ArrayPlot[SparseArray[zuobiao -> 1, Dimensions[tuxiang]], 
 FrameTicks -> Automatic]

效果如下,

追问

谢谢,怎么一次性处理大量图片,比如1000张以上,图片名字序号为1,2,...,5555这样的。

为什么我对一张图进行运算,原来大多是近似连续的线,在输出后怎么变成很散的点了,明显很很多点没有读入,基本看不出来原图形。

追答

说明你的图像根本就不是二值图像,只是一个灰度图像,像素值除了 0 和 1 之外,还有介于 0 和1 之间的值,需要把那个 Position 函数的用法修改一下,

Position[tuxiang, x_ /; x > 0];

至于一次性处理大量图片,这个个人觉得意义不大,楼主有兴趣的话,自己何不探索一番!

追问

因为我想把一个gif图为原型用mma做出一个动画来。还不知道能不能实现
感觉mma的教程太少,初学有些累。

追答

Mathematica教程怎么会少呢,你不妨到贴吧看一看,如果你是嫌累,我只能呵呵了

追问

我直接百度,都很少有,matlab倒是很容易就百度出来。
我现在在研究那个官方的资料书,很少逛贴吧的,回头看看。
很多东西看不懂,也不知道怎么用上。
我要做这个东西,gif每帧已经提取出来,现在也得到了坐标,怎么做出一个在坐标轴上的连续动画,给点提示哈。我试了下Animate,好像那个东西我找到的例子全都是带n或者x变量的。

追答

给你一个生成 gif 图的例子,很简单的,

Export["math.gif", 
 Table[ParametricPlot[{t - Sin[t], 1 - Cos[t]}, {t, -0.1, t0}, 
   PlotRange -> {{0, 4 Pi}, {0, 2}}, AspectRatio -> 1/2], {t0, 0, 13, 
   0.5}]]

追问

我已经搞定了,方法很麻烦。帧数是5

ListAnimate[{ArrayPlot[
SparseArray[{} -> 1, {240, 320}]
},5],中间的
ArrayPlot[]重复N次,关键是要读取N次图片,然后每个图片的数据放到这一段当中,不会同时处理大量图片额。
如何批量处理大量图片,得到坐标数组。。

追答

你可以这样一次读取你的所有图片,前提是你的图片格式都是一样的,要放到Mathematica的工作路径上。

files = FileNames["*.jpg"];
images = Map[Import, files]

这样 images 就存放了你的全部图片,是一个列表的格式,这样你就可以像操作列表一样对它们进行任意运算和控制,images[[1]] 就表示第一幅图,images[[2]] 就表示第二幅图,……,images[[-1]]表示最后一幅图。

本来之前是不建议你这样做的,图片太多,花费的时间很大,内存可能也吃不消,不过你执意的话,就按上述方法试试吧,望采纳,Thank you!

温馨提示:内容为网友见解,仅供参考
无其他回答

mathematica 求解的几个值怎么放到矩阵里面?
可以用下面的方法得到x,y的列表 Table[{x,y[x]}\/.t[[i]],{i,Length[t]}]在这主要是 \/. 的用法 其中y[x]为y的表达式或函数,t 为你上面显示的x的列表

Mathematica里如何把一个 For循环计算出的结果保存到一个Table里或List...
……你还是初学吧?Table就是个建列表的指令,List则是列表的头部,并不存在什么“把结果存在Table或List里”的问题。要建列表别去用For,For的语法啰嗦,而且速度慢。学学用Table指令吧。比如:ls=Table[ i + i^2, {i,1,10}]ls\/\/FullForm 运行看看吧,现在是不是明白一点了?

如何将mathematica所画的曲线图中的数据保存下来,可以用来利用origin...
比较简单的方法是直接用你画图的表达式用Table生成新数据表。当然如果你要直接从图里提取也是可以的(这个方法的优势是利用了Mathematica作图时的自适应取点),举个例子:Cases[Plot[Sin[x], {x, 0, Pi}], Line[{x__}] :> x, Infinity];Export["data.txt", %, "Table"] \/\/ SystemOpen(...

怎样用mathematica获取展开式的各项系数,就是怎样赋给一个数组,然后还...
使用CoefficientList[expr,x]这个指令,如要求3+2x+4x^2+5x^3+3x^4+x^6的各项系数,在Mathematica中输入:CoefficientList[3+2x+4x^2+5x^3+3x^4+x^6, x] 按回车键执行指令,得到的结果为:{3, 2, 4, 5, 3, 0, 1} 即得到的数组是 {3, 2, 4, 5, 3, 0, 1} 你可以...

mathematica中,如何用循环语句生成数组?循环语句是解方程,接n个方程...
用table,不要用for,举个例子,我想解 x^2 + k*x + 1 == 0, k=1,2,3,...,10这10个方程的解,那么就这么写 Table[x \/. Solve[x^2 + k*x + 1 == 0, x], {k, 1, 10}]

用Mathematica 怎样写语句 从文件中读入一维数组, 怎样输出数组到另一...
snum1 = ReadList[snum, Number]Close[snum](**计算 **)snum2 = snum1\/3 (**把计算结果(一维数组)输出到C:\/Users\/zhou\/Desktop\/22.txt **)Export["C:\/Users\/zhou\/Desktop\/22.txt", snum2, "Table"]参考资料:http:\/\/hi.baidu.com\/zzz700\/blog\/item\/f2a2dcf15ae7d4f4...

Mathematica的NDSolve的插值函数里的具体数据如何提取保存?例如可不...
PlotPoints -> 35,ColorFunction -> Hue]2步就搞定了。另外,你如果真的想取出函数u[x,t]上面的点的话,这样做 data = Flatten[ Table[{x, t, (u[t, x] \/. s)[[1]]}, {t, 0, 10, 0.1}, {x, 0, 5, 0.1}], 1];得到的结果是{xi,yi,f[xi,yi]}的形式的数组 ...

mathematica如何把一张图的数据以数组的形式导出来?
FullForm[你的图像输出]

有关mathematica的一个问题,希望大神帮忙解决
这样就可以了。(1)不使用N作为变量,因为N在Mathematica中是函数;(2)若a(n,j,s)用三维数组表示出来,下标不能取到0;(3)Sum括号里求和的次序不能变;(4)如果j和s是有理数(分数或整数)的话,Cos函数将给出形式化的值,例如:Cos[1],如果要得到数值结果,可以用N[Cos[j-s]]

mathematica怎样给出一个数组所有可能的排列
使用CoefficientList[expr,x]这个指令,如要求3+2x+4x^2+5x^3+3x^4+x^6的各项系数,在Mathematica中输入:CoefficientList[3+2x+4x^2+5x^3+3x^4+x^6,x]按回车键执行指令,得到的结果为:{3,2,4,5,3,0,1} 即得到的数组是 {3,2,4,5,...

相似回答