Skocz do zawartości

Python, opencv, maska obrazu, przycięcie obrazu


Mialek

Pomocna odpowiedź

Witam. mam taki kod, do uzyskiwania video, jak nałożyć białą maskę żeby tylko widzieć to co jest w niebieskiej ramce

import cv2

cap = cv2.VideoCapture(0)

cap.set(3,640)
cap.set(4,380)

while(1):
    _, frame = cap.read()
    cut = cv2,rectangle(frame, (220, 200), (450, 400), (255,0,0), 2)
    cv2.imshow('cut', cut)
    k = cv2.waitKey(5) & 0xFF
    if k == 27:
        break
cv2.destroyAllWindows()

 

Wielkie dzięki, pewnie dla was banalne, ja nie mogę znaleźć odpowiedzi.

Edytowano przez Mialek
Link do komentarza
Share on other sites

Czyli rysujesz na klatce niebieski prostokąt o grubości 2?

To skorzystaj z roi (region of interest) żeby wyciąć fragment obrazu (wybierz indeksy które cię interesują). Uważaj tylko bo w numpy na pierwszej pozycji masz y a na drugiej x.

Teraz masz 2 opcje:

  1. utwórz nowy obrazek wypełniony 1 o wielkości oryginału i przeklej do niego wycinek.
  2. lub zrób ramkę dookoła wycinku dedykowaną funkcją.

filled = np.ones_like(frame)
cuted = frame[ymin:ymax, xmin:xmax]
height, width, channels = cut.shape
filled[ymin:ymin+height, xmin:xmin+width] = cuted
  
#lub tak. Tylko te 10 to wyliczasz znając kształt (shape) obu obrazów
 
cuted = frame[ymin:ymax, xmin:xmax]
bordered = cv.copyMakeBorder(cuted,10,10,10,10,cv.BORDER_CONSTANT,value=WHITE)

 

Edytowano przez Gieneq
  • Pomogłeś! 1
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.