2014-07-12 3 views
0

저는 OpenCV를 파이썬에서 사용하고 있습니다.Python에서 OpenCV minMaxLoc 함수의 마스크 행렬 변수를 만드는 방법은 무엇입니까?

이 함수에 사용할 Mask 행렬 변수를 만들려고합니다 : cv.minMaxLoc. Matrix 변수는 내 템플릿 이미지와 같은 크기 여야하며 유형은 CV_8UC1입니다.

내 템플릿 이미지는 0% 또는 100% 투명 픽셀로 구성된 알파 채널을 가지고 있습니다. 이미지에서 알파 채널 데이터를 추출하여 0 = 100% transparency1 = 0% transparencyMask 매트릭스에 어떻게 넣을 수 있습니까? 다른 게시물에

답변

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

cvmat에 NumPy와 배열을 변환하려면 수행

cv_arr = cv.fromarray(mask) 

확인 마스크의 DTYPE을. 나는 내 cv_arr가 변환 할 때 그것은 DTYPE ('UINT8') 해야 cvmat (유형 = 42424000 8UC1 행 = 1245 COLS = 2400 단계 = 2400)

내가 OpenCV의 전문가 아니지만, 그것은 보인다 나에 따르면 8UC1은 dtype이 uint8이라는 사실에 기반하여 자동으로 선택된다. (나는 그것에 관한 문서를 찾을 수 없기 때문에 여기서 추측하고있다.)

관련 문제