2012-07-15 11 views

Odpowiedz

13

Nie wiem, czy jest to najszybszy sposób, ale jest to sposób na zrobienie tego.

Utwórz obraz maski z regionem twarzy jako biały, a następnie zastosuj funkcję bitową_i z oryginalnym obrazem i obrazem maski.

x = y = 30 
w = h = 100 

mask = np.zeros(img.shape[:2],np.uint8) 
mask[y:y+h,x:x+w] = 255 
res = cv2.bitwise_and(img,img,mask = mask) 

Zajmuje 0.16 ms w moim systemie (rdzeń i5,4GB RAM) dla obrazu o rozmiarze 400x300

EDIT - lepsza metoda: Nie trzeba robić jak wyżej. Po prostu utwórz zerowy obraz, a następnie skopiuj ROI z oryginalnego obrazu do zera. to wszystko.

mask = np.zeros(img.shape,np.uint8) 
mask[y:y+h,x:x+w] = img[y:y+h,x:x+w] 

To trwa tylko 0.032 ms w moim systemie dla powyższych parametrów, 5 times faster niż powyżej.

Wyniki: image

Wejście:

enter image description here

wyjściowa:

enter image description here

Powiązane problemy