【问题标题】: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% transparency 和1 = 0% transparency 的Mask 矩阵?
【问题讨论】:
标签:
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 的事实自动选择的(我在这里猜测是因为我找不到关于它的文档)。