【问题标题】:How to create Mask matrix variable for OpenCV minMaxLoc function in Python?如何在 Python 中为 OpenCV minMaxLoc 函数创建掩码矩阵变量?
【发布时间】:2014-07-12 23:09:02
【问题描述】:

我在 Python 中使用 OpenCV。

我正在尝试创建一个Mask 矩阵变量以用于此函数:cv.minMaxLoc。 Matrix 变量的大小应与我的模板图像相同,类型 = CV_8UC1

我的模板图像有一个 alpha 通道,它仅包含 0%100% 透明度像素。如何从我的图像中提取 alpha 通道数据并将其放入带有0 = 100% transparency1 = 0% transparencyMask 矩阵?

【问题讨论】:

    标签: python opencv computer-vision alpha alpha-transparency


    【解决方案1】:
    import numpy as np
    import cv
    from PIL import Image
    
    # open the image
    img = Image.open('./pic.png', 'r')
    
    r,g,b, alpha_channel = img.split()
    
    mask = np.array(alpha_channel)
    
    # all elements in alpha_channel that have value 0 
    # are set to 1 in the mask matrix
    mask[alpha_channel==0] = 1
    
    # all elements in alpha_channel that have value 100
    # are set to 0 in the mask matrix
    mask[alpha_channel==100] = 0
    

    感谢其他帖子: How to get alpha value of a PNG image with PIL? Converting numpy array having image data to CvMat

    要将 numpy 数组转换为 cvmat,请执行以下操作:

    cv_arr = cv.fromarray(mask)
    

    检查掩码的数据类型。它应该是 dtype('uint8') 当我转换它时,我的 cv_arr 是 cvmat(type=42424000 8UC1 rows=1245 cols=2400 step=2400)

    我不是 opencv 方面的专家,但在我看来,8UC1 是基于 dtype 是 uint8 的事实自动选择的(我在这里猜测是因为我找不到关于它的文档)。

    【讨论】:

      猜你喜欢
      • 2020-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多