Jak mogę używać imshow do wyświetlania wielu obrazów w wielu oknach?


Chciałbym wykonać następującą czynność, aby wyświetlić dwa obrazy na ekranie:
imshow("1", img1);
imshow('2', 'img2');

Czy da się to zrobić?
Podziękować!
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Tak to mozliwe. Funkcja
void imshow (const string & amp; winname, InputArray mat)
wyświetla obraz w określonym oknie, gdzie -
  • winname to nazwa okna.
  • obraz-obraz do pokazania.

Okno jest identyfikowane jego nazwą. Więc aby wyświetlić dwa obrazy (img1, img2) w dwóch różnych oknach; użyj
imshow
z inną nazwą, na przykład: -
imshow("1",img1);
imshow("2",img2);
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

A oto jak to zrobić w Pythonie:
cv2.namedWindow("Channels")
cv2.imshow("Channels", image_channels) cv2.namedWindow("Main")
cv2.imshow("Main", image_main)

Po prostu tworzysz nazwane okno i przekazujesz jego nazwę jako ciąg do imshow.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

U mnie działa w Pythonie, z zastrzeżeniem:
cv2.imshow("image 1", my_image_1)
cv2.imshow("image 2", my_image_2)
cv2.waitKey(0)

Zastrzeżenie jest takie, że oba okna znajdują się w tym samym miejscu na ekranie, więc to

wygląda jak

tylko jako jedno otwarte okno (Ubuntu 14.4).
Mogę przeciągać jeden do drugiego za pomocą myszy.
Teraz szukam sposobu automatycznego umieszczania ich obok siebie i tak znalazłem to pytanie.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Mam problem z tworzeniem dowolnej liczby okien openCV. Trzymałem je na liście i nie mogłem po prostu powtórzyć jej, aby wyświetlić:
# images is a list of openCV image objectfor img in images:
cv2.imshow('image',i)

Nie działa to z trywialnego powodu, że obrazy wymagają innej etykiety, więc ta pętla wyświetli tylko ostatnią pozycję na liście.
Można to rozwiązać za pomocą iteratora i elementów formatujących ciągi w Pythonie:
for i, img in enumerator(images):
cv2.imshow("Image number {}".format(i), img)

Dlatego teraz wszystkie obrazy będą wyświetlane, ponieważ otrzymały inną etykietę.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Jeśli twoje obrazy są w tablicach numpy, możesz użyć funkcji numpy.hstack, która łączy dwie tablice w jedną i używa cv2.imshow () do wyświetlenia tablicy.
https://docs.scipy.org/doc/num ... .html
https://docs.scipy.org/doc/num ... .html

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się