如何在Python中为OpenCV minMaxLoc函数创建Mask矩阵变量?

时间:2014-07-12 13:06:09

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

我在Python中使用OpenCV。

我正在尝试创建要在此函数中使用的Mask Matrix变量:cv.minMaxLoc。 Matrix变量应与我的模板图像具有相同的大小,类型为CV_8UC1

我的模板图片有一个Alpha通道,仅包含0%100%透明像素。如何从我的图片中提取Alpha通道数据,并将其与Mask0 = 100% transparency一起放入1 = 0% transparency矩阵?

1 个答案:

答案 0 :(得分: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 do:

cv_arr = cv.fromarray(mask)

检查面具的dtype。它应该是dtype('uint8') 当我转换它时,我的cv_arr是 cvmat(type = 42424000 8UC1 rows = 1245 cols = 2400 step = 2400)

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