【问题标题】:how to achieve pixelmath in numpy/scipy如何在 numpy/scipy 中实现像素数学
【发布时间】:2013-10-23 14:33:32
【问题描述】:

我目前正在阅读一本使用像素数学的书。

问题是我该怎么做:

pmNewComputedImage("Ringing Paraboloid", 256,256,"(sqr(x)+sqr(y)) mod 256")

这将根据公式(sqr(x)+sqr(y)) mod 256 返回一个 256*256 的图像。

这个想法是我无法在 numpy 中做到这一点。我仍然是numpy的新手。我只需要知道如何将行的平方添加到列中,将其修改为 256 并返回一个新数组。

编辑:

在像素数学中:

在 numpy 和 matplotlib 中:

谢谢。

【问题讨论】:

    标签: python image numpy scipy


    【解决方案1】:

    试试这个:

    x = np.arange(256).reshape(-1, 1)
    y = np.arange(256)
    rng_paraboloid = (x*x + y*y) % 256
    
    import matplotlib.pyplot as plt
    plt.imshow(rng_paraboloid, interpolation='nearest')
    

    在 numpy-speak 中,数组 xy 的形状 (256, 1)(256) broadcast 到一个共同的形状 (256, 256)

    【讨论】:

    • x = np.arange(256).reshape(-1, 1) y = np.arange(256) 您也可以执行以下操作 x, y = np.ogrid[0:256, 0:256]。我更新了上面的帖子,请检查两张图片。我照你说的做了。第一张图片有什么解释吗?
    • 你的描述是错误的:sqr 不是平方根,而是平方,看我的编辑。
    • 顺便说一句,在 OpenCV (cv2) 中绘制解决方案的结果与 OP 的图表完全相同
    猜你喜欢
    • 2015-03-11
    • 1970-01-01
    • 2015-11-13
    • 2019-12-10
    • 2011-08-30
    • 1970-01-01
    • 2016-08-09
    • 2011-02-13
    • 1970-01-01
    相关资源
    最近更新 更多