【问题标题】:Simplest way to convert a low-resolution black and white picture to a matrix将低分辨率黑白图片转换为矩阵的最简单方法
【发布时间】:2021-11-17 05:36:54
【问题描述】:

我有一组分辨率非常低的图片(在 .png 中,但我可以轻松地将它们转换为其他图片)。它们都只有黑色或白色像素,如二维码。

我想要的是能够将它们读取为二进制矩阵(黑色像素为 1,白色像素为 0)。

我不需要比这更花哨的东西,我应该用什么?

【问题讨论】:

    标签: python image


    【解决方案1】:

    您好,您可以使用 PIL 读取图像,然后使用 numpy 将其转换为矩阵

    from PIL import Image
    import numpy as np
    
    im = Image.read("imageName.ext")
    im_mat = np.asarray(im)
    

    或者,您可以使用 opencv 一步完成所有操作

    导入 cv2

    img = cv2.imread("imageName.ext")
    

    在这两种情况下,您都将拥有一个大小为WxHxC 的矩阵,其中 H 为高度(以像素为单位),W 为宽度,c 为通道数(3 或 4,具体取决于是否存在用于透明度的 alpha)。

    如果您的图像是黑白的,并且您只想要一个大小为WxH 的矩阵,则使用一个通道

    img = img_mat[:,:,0] #8-bit matrix
    

    最后你可以二值化,给出一个本影或仅仅通过比较

    bin = img> 128
    

    bin = img == 255 
    

    我更正了最后一行我有一个错字

    【讨论】:

    • 最后一行应该如何工作?使用 cv2,我设法通过使用 > bin = img
    • 我忘了还有一个=号,应该是bin = img ==255
    猜你喜欢
    • 1970-01-01
    • 2011-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-01
    • 2011-12-01
    • 2014-03-23
    • 2014-11-20
    相关资源
    最近更新 更多