C++ OpenCV Fehler bei eingabe von mehr als 2 Cams
-
Hallo zusammen,
mit unten stehendem Code kann ich eine oder zwei Kameras anzeigen lassen jedoch sobald ich 3 Kameras auswähle unterbricht VS die Ausführung
mit Folgender Fehler meldungUnbehandelte Ausnahme bei 0x75DADB18 in OpenCV_Test3.exe: Microsoft C++-Ausnahme: cv::Exception bei Speicherort 0x0054F898.
#include "opencv2\highgui.hpp" using namespace cv; using namespace std; void main() { const int CAM_COUNT = 2; // Anzahl der Kameras VideoCapture cap[CAM_COUNT]; //array der Captures Mat image[CAM_COUNT]; // Array der Zwischenspeicher string name[CAM_COUNT]; //zum benenne der Fesnter for (int i = 0; i < CAM_COUNT; i++) { name[i] = "Cam " + to_string(i); //label der Fenster cap[i].open(i); //Caps öffnen } while (waitKey(1) != 27) { // Beenden mit ESC for (int i = 0; i < CAM_COUNT; i++) { cap[i] >> image[i]; //Zwischenspeicher imshow(name[i], image[i]); //Anzeige in verschiedenen Fenster } } for (int i = 0; i < CAM_COUNT; i++) { cap[i].release(); //Release aller Kameras } }
-
Schon wieder jemand, der die C++ Grundlagen noch nicht kennt, aber schon große Dinge programmieren will.
Dann machst du mal ein try/catch drum und siehst dir an, was OpenCV dir sagen will.
-
Nach meiner bescheidenen Ansicht des Code installierst Du zwei Kameras, willst aber drei?
-
lemon03 schrieb:
Nach meiner bescheidenen Ansicht des Code installierst Du zwei Kameras, willst aber drei?
Wie kommst da drauf?
-
Naja mann muss ja große Zielen setzen um gut zu werden

als beim beim try/catch
kam zuerrst raus das eine der cams nicht schnell geung sind und dann versucht wird ein leeres Bild zu übertragen wodurch ein fehler kommt habe dieses jetzt abgefangen mit einer
if (!image[1].empty) { imshow(name[i], image[i]); }so jetzt kommt aber ein anderer Fehler mit dem ich echt nichts anfangen kann
OpenCV Error: Assertion failed (dims <= 2 && data && (unsigned)i0 < (unsigned)size.p[0] && (unsigned)(i1*DataType<_Tp>::channels) < (unsigned)(size.p[1]*channels()) && ((((sizeof(size_t)<<28)|0x8442211) >> ((DataType<_Tp>::depth) & ((1 << 3) - 1))*4) & 15) == elemSize1()) in cv::Mat::at, file g:\projekt tk\opencv\build\include\opencv2\core\mat.hpp, line 538 Standard exception: g:\projekt tk\opencv\build\include\opencv2\core\mat.hpp:538: error: (-215) dims <= 2 && data && (unsigned)i0 < (unsigned)size.p[0] && (unsigned)(i1*DataType<_Tp>::channels) < (unsigned)(size.p[1]*channels()) && ((((sizeof(size_t)<<28)|0x8442211) >> ((DataType<_Tp>::depth) & ((1 << 3) - 1))*4) & 15) == elemSize1() in function cv::Mat::atlemon klar sind im geposteten code nur 2 cams aktiv so funktioniert es auch wenn du den cam_count hochsetzt sollten drei cams laufen
-
Dir ist hoffentlich schon aufgefallen, dass dies kein OpenCV Forum ist.
Möglicherweise bedeutet das, dass deine Mat keine Dimension haben.