如何在Python上选择图像中的特定水平像素行进行分析



我是Python的初学者,开始尝试编写代码来分析喷雾图像并绘制"灰度值"以查看喷雾模式。

有一段时间我有这个代码:

from PIL import Image
import numpy as np

import matplotlib.pyplot as plt

filepath = "flat2.jpg"

img = Image.open(filepath).convert('L')


WIDTH, HEIGHT = img.size
pix = img.load()

data = np.asarray(img.getdata())
data = data.reshape((HEIGHT,WIDTH))

fig,ax = plt.subplots()
reduced_data = data.mean(axis=0)

ax.plot(reduced_data)

plt.show()

然而,这段代码分析了整个图像,我只需要一条特定的行,比如329行之类的。作为缓解措施,我也尝试裁剪图像,但没有成功。

我正在尝试做一个类似工具";绘图配置文件";关于图像J.

显然,我只是";制成";这段代码得到了一些用户的帮助。

平风扇喷雾图像。

线条和图像J绘图剖面

由于几个小时后没有人向我们提供正确有效的解决方案样本,以下是作物缓解:

from PIL import Image
filepath = 'flat2.jpg'
img = Image.open(filepath).convert('L')
WIDTH, HEIGHT = img.size
LINE = 329         # <---- put here your desired line number
img = img.crop( (0, LINE, WIDTH, LINE+1 ) ).save('crop.png')
img = Image.open('crop.png')
# do stuff
# WIDTH, HEIGHT = img.size
# pix = img.load()
# etc

它应该起作用,但它根本不是一个正确有效的解决方案。我认为应该通过numpy

至于crop()函数,这是一件非常简单的事情。它只是从给定的图像中获取一些矩形区域(框(。括号内的四个数字(x1,y1,x2,y2(是该框的坐标元组。左上角(x1,y1(右下角(x2,y2(。唯一可能的问题是,如果这些坐标中的任何一个超出了图像大小。

最新更新