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

问题描述

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

有一阵子我有这段代码

document
.body
.querySelector("iframe")
.addEventListener(
    "load",async ( { currentTarget: { src } } ) => {
        const data = await fetch(
            src,{
                cache: "only-if-cached"
            }
        );

        // ... use data
    },{
        passive: true,once: true
    }
);

但是,此代码分析整个图像,我只需要特定的一行,例如329行或其他内容。作为缓解措施,我也尝试裁剪图像,但是没有成功。

我正在尝试编写类似于Image J上的工具“绘图配置文件”的代码

很显然,我只是在这里一些用户的帮助下“编写”了这段代码

Flat fan spray image.

The line and imageJ plot profile

解决方法

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

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)。唯一可能的麻烦是,如果这些坐标中的任何一个超出图像尺寸。