V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Hzzone
V2EX  ›  问与答

numpy 如何实现一个正方形边缘区域置为 0

  •  
  •   Hzzone · 2017-11-03 17:53:55 +08:00 · 1413 次点击
    这是一个创建于 2381 天前的主题,其中的信息可能已经有所发展或是发生改变。


    一张这样的 numpy 矩阵,圆的直径等于正方形变长,我想把圆外的区域都置为 0 或者一个边界值,python 有什么有效的方法吗?
    谢谢各位!

    1 条回复    2017-11-03 18:30:37 +08:00
    Hzzone
        1
    Hzzone  
    OP
       2017-11-03 18:30:37 +08:00
    更新一下解决方法:
    ```
    width, height = pixel_array.shape
    y, x = np.ogrid[0:width,0:height]
    centerx, centery = (width/2, height/2)
    # print(x, y)
    mask = ((y - centery)**2 + (x - centerx)**2) > (width/2)**2
    print(mask.shape)
    pixel_array[mask] = YOUR_BOUNDARY
    plt.imshow(pixel_array)
    plt.show()
    plt.hist(pixel_array.flatten(), bins=80, color='c')
    plt.show()
    ```
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1253 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 18:13 · PVG 02:13 · LAX 11:13 · JFK 14:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.