OpenCV z kamerami GigE Vision [zamknięta]
Muszę używać OpenCV z kamerą GigE Vision Ethernet, ale nie mogłem znaleźć zbyt wielu przydatnych informacji, jak to zrobić, żadnych wskaźników, dokumentów i przykładowego kodu?
Muszę odczytać ramki z kamera.
4 answers
Gig - E jest standardem komunikacji dla szerokiej gamy kamer. OpenCV zawiera teraz wrapper dla Prosilica Gig-E based cameras (zobacz CV_CAP_PVAPI)
Ale ogólnie lepiej jest użyć natywnego API aparatu, aby uzyskać dane, a następnie użyć openCV do konwersji zwróconych danych na obraz, openCv zawiera szereg procedur Bayer pattern- > RGB.
Moduł CvCapture jest wygodny do testowania, ponieważ może wydawać się odczytywany z kamery lub pliku - ale jest nie nadaje się do szybkiego widzenia w czasie rzeczywistym
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-01 23:15:57
Dasz radę! Użyłem BAUMER GAPI SDK, który jest delikatnym konsumentem. GenTL jest generyczną warstwą transportową, która jest modułem w genIcam. Możesz przeczytać o GenTL tutaj . Korzystanie z łagodnego konsumenta, takiego jak GAPI BAUMERA lub API Baslera, znacznie ułatwia sprawę. Powinny współpracować z każdą kamerą GigE.
Zrobiłem bardziej wszechstronny sposób korzystania z BAUMERA GAPI SDK w innej odpowiedzi tutaj, więc podam podsumowanie tego, czego potrzebujesz.
- Visual Studia OpenCV 3 dla C++ ( tutaj jest tutorial na youtube jak)
- BAUMER GAPI SDK tutaj
- (opcjonalnie) Przetestuj kamerę i kartę interfejsu sieciowego za pomocą programu Camera Explorer firmy Baumer. Musisz włączyć Pakiety jumbo. Może być również konieczne skonfigurowanie adresu IP Kamery i samochodu za pomocą programu ipconfig firmy Baumer.
- Konfiguracja zmiennych systemowych. zapoznaj się z poradnikiem programisty w folderze Baumer GAPI SDK docs (powinien znajdować się w
C:\Program Files\Baumer\Baumer GAPI SDK\Docs\Programmers_Guide
). Zob. pkt 4.3.1. - Utwórz nowy projekt C++ w Visual Studios i skonfiguruj właściwości. Zob. pkt 4.4.1.
- przejdź do folderu examples i poszukaj przykładu 005_PixelTransformation. Powinno być w (
C:\Program Files\Baumer\Baumer GAPI SDK\Components\Examples\C++\src\0_Common\005_PixelTransformation
). Skopiuj plik C++ i wklej go do katalogu źródłowego nowego projektu. - sprawdź, czy możesz budować i kompilować. Uwaga: Może wystąpić problem z częścią, która dostosowuje parametry kamery (na przykład czas ekspozycji). powinieneś zobaczyć wartości pikseli zapisywane na ekranie dla pierwszych 6 pikseli w pierwszych 6 rzędach, dla 8 obrazów.
Dodaj te wyrażenia # include do góry .plik źródłowy cpp:
#include <opencv2\core\core.hpp
#include <opencv2\highgui\highgui.hpp>
#include <opencv2\video\video.hpp>
Dodaj te deklaracje zmiennych na początku main()
funkcji
// OPENCV VARIABLE DECLARATIONS
cv::VideoWriter cvVideoCreator; // Create OpenCV video creator
cv::Mat openCvImage; // create an OpenCV image
cv::String videoFileName = "openCvVideo.avi"; // Define video filename
cv::Size frameSize = cv::Size(2048, 1088); // Define video frame size
cvVideoCreator.open(videoFileName, CV_FOURCC('D', 'I', 'V', 'X'), 20, frameSize, true); // set the codec type and frame rate
W oryginale 005_PixelTransformation.plik cpp, linia 569 ma pętlę for
, która zapętla 8 obrazów, co mówi for(int i = 0; i < 8; i++)
. Chcemy to zmienić, aby działało nieprzerwanie. Zrobiłem to zmieniając go na pętlę while
, która mówi
while (pDataStream->GetIsGrabbing())
Wewnątrz pętli while znajduje się instrukcja if
i else
sprawdzająca format pikseli obrazu. Po wyrażeniu else
i przed wyrażeniem pImage->Release();
dodaj następujące wiersze
// OPEN CV STUFF
openCvImage = cv::Mat(pTransformImage->GetHeight(), pTransformImage->GetWidth(), CV_8U, (int *)pTransformImage->GetBuffer());
// create OpenCV window ----
cv::namedWindow("OpenCV window: Cam", CV_WINDOW_NORMAL);
//display the current image in the window ----
cv::imshow("OpenCV window : Cam", openCvImage);
cv::waitKey(1);
Upewnij się, że wybrałeś prawidłowy format pikseli dla obiektu openCvImage
. Wybrałem CV_8U
ponieważ mój aparat jest mono 8 bit.
Kiedy budujesz i kompilujesz, powinieneś otrzymać okno openCV, które wyświetla obraz na żywo z twojej kamery!
Jak Ja said, można to zrobić, bo ja to zrobiłem. Jeśli napotkasz problemy, zapoznaj się z przewodnikiem programisty.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-17 23:49:28
Używam kamery uEye GigE (5240) z OpenCV. Działa jako CV:: VideoCapture po wyjęciu z pudełka. Jednak korzystanie z API pozwala na znacznie większą kontrolę nad parametrami kamer.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-30 07:38:43
Nie wspominasz o typie kamery i platformie. W systemie Windows, zgodnie z dokumentacją OpenCV:
Obecnie dwa interfejsy Kamery Mogą być używane w systemie Windows: Wideo Dla Windows (VFW) i Matrox Imaging Library (MIL)
Jest mało prawdopodobne, że Sterownik kamery GigE obsługuje VFW, a do MIL potrzebujesz biblioteki MIL, która nie jest darmowa AFAIK.
Większość kamer GigE będzie miała interfejs API, którego możesz użyć do przechwytywania obrazów. W większości przypadków API będzie oparty na GenICam . Prawdopodobnie najlepszym rozwiązaniem jest użycie API dostarczonego z aparatem, a następnie przekonwertowanie przechwyconego obrazu do struktury IplImage (C) lub klasy Mat (C++).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-28 05:18:42