我需要对PixelAccess对象上的标量乘法因子进行矢量化,我目前正在nested for loop中进行此操作.

Input Image enter image description here

Current Attempt

original = Image.open('img.png')
TEMP = '/tmp/tmp.jpg'
original.save(TEMP, quality=90)
temporary = Image.open(TEMP)
diff = ImageChops.difference(original, temporary)
d = diff.load()
SCALE = 10

# Part to vectorize
WIDTH, HEIGHT = diff.size
for x in range(WIDTH):
    for y in range(HEIGHT):
        d[x, y] = tuple(k * SCALE for k in d[x, y])

问题是PixelAccess对象的 struct 是一个由3个元素元组组成的2d数组,这使得它无法直观地适应numpy框架.

推荐答案

您可以使用内置图像操作,而不是访问单个像素:您可以通过使用比例因子scale = 2 / SCALE将图像添加到自身来zoom SCALE,请参见docs:

diff = ImageChops.add(diff, diff, 2/SCALE)

On my computer this is 95 times faster for the provided example image.
Please note that the result will be clipped to 255.

Python相关问答推荐

"Discord机器人中缺少所需的位置参数ctx

如何在PIL、Python中对图像应用彩色面膜?

请从Python访问kivy子部件的功能需要帮助

如何使用Jinja语法在HTML中重定向期间传递变量?

Python多处理:当我在一个巨大的pandas数据框架上启动许多进程时,程序就会陷入困境

比较两个数据帧并并排附加结果(获取性能警告)

滚动和,句号来自Pandas列

根据另一列中的nan重置值后重新加权Pandas列

Python上的Instagram API:缺少client_id参数"

需要计算60,000个坐标之间的距离

如何在Windows上用Python提取名称中带有逗号的文件?

如何请求使用Python将文件下载到带有登录名的门户网站?

关于Python异步编程的问题和使用await/await def关键字

在嵌套span下的span中擦除信息

无论输入分辨率如何,稳定扩散管道始终输出512 * 512张图像

基于形状而非距离的两个numpy数组相似性

PYTHON、VLC、RTSP.屏幕截图不起作用

为什么我的sundaram筛这么低效

pandas fill和bfill基于另一列中的条件

根据客户端是否正在传输响应来更改基于Flask的API的行为