OpenCV z kamerami GigE Vision [zamknięta]

zamknięte . To pytanie musi być bardziej skoncentrowane . Obecnie nie przyjmuje odpowiedzi. Zamknięte w zeszłym roku . zamknięty. To pytanie i jego odpowiedzi są zamknięte , ponieważ pytanie jest off-topic, ale ma znaczenie historyczne. Obecnie nie przyjmuje nowych odpowiedzi ani interakcji.

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.

Author: GEOCHET, 2010-07-27

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

 20
Author: Martin Beckett,
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.

  1. Visual Studia
  2. OpenCV 3 dla C++ ( tutaj jest tutorial na youtube jak)
  3. BAUMER GAPI SDK tutaj
  4. (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.
  5. 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.
  6. Utwórz nowy projekt C++ w Visual Studios i skonfiguruj właściwości. Zob. pkt 4.4.1.
  7. 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.
  8. 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.

Tutaj wpisz opis obrazka

 9
Author: mark jay,
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.

 4
Author: Herr von Wurst,
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++).

 3
Author: Dani van der Meer,
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