我有一些显示曲线的实验截图,我想将该曲线提取到数组中以分析数据。
我的方法的第一部分是将图像转换为二元图像,其中选择的阈值只选择离开曲线。这样可以正常工作,但是从曲线中提取数组的第二部分却没有。我尝试了“天真”的方法来浏览图片并识别白色像素,但结果远不及预期的结果。
有人有解决方案吗?
import numpy as np
import matplotlib.pyplot as plt
import PIL.Image as img
gray = img.open('0100k.jpg').convert('L')
bw = gray.point(lambda x: 0 if x<240 else 255, '1')
bw = bw.convert('1')
bw.show()
pix = np.array(bw)
(n,m) = pix.shape
curve = np.zeros(n)
for i in range(n):
for j in range(m):
if pix[i,j] == 1:
curve[i] = j
plt.plot(curve)
plt.show()
答案 0 :(得分:0)
谢谢大家,这个方法现在有效,解决方案是将i和j正确分配给各自的维度。感谢@Matt Cremens指出它。
但是情节变粗,它会检测到一些不存在的像素,就像图片左侧可见的像素一样:http://s31.postimg.org/i0conbbxn/figure_1.png