2013-05-29 14 views
7

Używam opencv 2 z kamerą internetową. Mogę pobrać strumień wideo i przetworzyć go, ale nie mogę wymyślić sposobu na zmianę rozmiaru okna wyświetlacza. Mam kilka ujęć wideo ułożonych poziomo, ale wymiar obrazu jest bardzo mały, tak że trudno jest zobaczyć rzeczy.Jak zmienić rozmiar okna w pytku opencv2

Mój kod jest dość prosty, a wzdłuż linii to:

cv2.namedWindow("main") 

.... 

result = np.hstack((res2, foreground)) 
result = np.hstack((ff, result)) 

cv2.imshow("main", result) 
cv2.waitKey(20) 

W opencv documentation Zjednoczone:

namedWindow 
flags – Flags of the window. Currently the only supported flag is CV_WINDOW_AUTOSIZE . If this is set, the window size is automatically adjusted to fit the displayed image (see imshow()), and you cannot change the window size manually. 

Ale qt backendy widocznie mają dodatkowe flagi. Nie mam zaplecza qt. Czy istnieje sposób na zwiększenie rozmiarów zdjęć, aby je zobaczyć?

Odpowiedz

10

Tak, niestety nie można ręcznie zmienić rozmiaru okna nameWindow bez obsługi Qt. Dostępne opcje:

  • użytku cv2.resize funkcja zmiany rozmiaru obrazu do żądanej wielkości przed wyświetleniem obrazu
  • zainstalować OpenCV ze wsparciem backend Qt i korzystać cv2.namedWindow("main", CV_WINDOW_NORMAL)
+0

Masz rację. Użyłem zmiany rozmiaru na ramie i zadziałało. – Bak

+0

Jak wykorzystałeś zmianę rozmiaru? – user391339

+0

cv2.resize (obraz, (0, 0), fx = 0,5, fy = 0,5) zmieni rozmiar obu osi o połowę, podczas gdy cv2.resize (obraz, (100, 50)) zmieni rozmiar na szerokość 100 i wysokość 50 pikseli . – uutsav

-2

Zgodnie z dokumentami musisz utworzyć okno z autosize true.

cv2.namedWindow("main", cv2.WINDOW_AUTOSIZE) 

Twoje połączenie z imshow spowoduje automatyczne dopasowanie rozmiaru okna do obrazu.

+0

Opcja WINDOW_AUTOSIZE jest jako domyślny i ustawia wielkość okno do rzeczywistego ustalonego rozmiaru obrazu. –

2

Możesz użyć flagi WINDOW_NORMAL Dzwoniąc funkcja namedWindow, jak pokazano poniżej. Pozwoli to zmienić rozmiar okna.

namedWindow("Image", WINDOW_NORMAL); 

Sprawdź funkcja namedWindow udokumentowane here

8

Wystarczy napisać

cv2.namedWindow("main", cv2.WINDOW_NORMAL) 

a następnie ręcznie zmienić jego rozmiar do pożądanego rozmiaru

Powiązane problemy