Hzzone
V2EX  ›  问与答

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

  •  
  •   Hzzone · Nov 3, 2017 · 1762 views
    This topic created in 3118 days ago, the information mentioned may be changed or developed.


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

    1 replies    2017-11-03 18:30:37 +08:00
    Hzzone
        1
    Hzzone  
    OP
       Nov 3, 2017
    更新一下解决方法:
    ```
    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()
    ```
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   933 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 21:01 · PVG 05:01 · LAX 14:01 · JFK 17:01
    ♥ Do have faith in what you're doing.