gpt4 book ai didi

python - "painting"使用 python/numpy 将一个数组转换为另一个数组

转载 作者:太空狗 更新时间:2023-10-29 21:30:11 26 4
gpt4 key购买 nike

我正在编写一个库来处理 Python 中的注视跟踪,我对整个 numpy/scipy 世界相当陌生。本质上,我希望及时获取一组 (x,y) 值,并在这些坐标处将一些形状“绘制”到 Canvas 上。例如,形状可能是一个模糊的圆圈。

我想到的操作与在 Photoshop 中使用画笔工具大致相同。

我有一个交互式算法,可以将我的“画笔”修剪到图像的边界内,并将每个点添加到累加器图像,但它很慢(!),而且似乎可能有一种从根本上更简单的方法做这个。

关于从哪里开始寻找的任何指示?

最佳答案

在您的问题中,您描述了一个高斯滤波器,scipy 通过 package 为其提供支持.例如:

from scipy import * # rand
from pylab import * # figure, imshow
from scipy.ndimage import gaussian_filter

# random "image"
I = rand(100, 100)
figure(1)
imshow(I)

# gaussian filter
J = gaussian_filter(I, sigma=10)
figure(2)
imshow(J)

当然,您可以使用切片将其应用于整个图像,或仅应用于补丁:

J = array(I) # copy image
J[30:70, 30:70] = gaussian_filter(I[30:70, 30:70], sigma=1) # apply filter to subregion
figure(2)
imshow(2)

对于基本的图像处理,Python 图像库 ( PIL) 可能是您想要的。

注意:对于用“刷子”“绘画”,我想你可以用你的刷子创建一个 bool 掩码数组。例如:

# 7x7 boolean mask with the "brush" (example: a _crude_ circle)
mask = array([[0, 0, 1, 1, 1, 0, 0],
[0, 1, 1, 1, 1, 1, 0],
[1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1],
[0, 1, 1, 1, 1, 1, 0],
[0, 0, 1, 1, 1, 0, 0]], dtype=bool)

# random image
I = rand(100, 100)
# apply filter only on mask
# compute the gauss. filter only on the 7x7 subregion, not the whole image
I[40:47, 40:47][mask] = gaussian_filter(I[40:47, 40:47][mask], sigma=1)

关于python - "painting"使用 python/numpy 将一个数组转换为另一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1949225/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com