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 meldung

    Unbehandelte 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::at
    

    lemon 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.


Anmelden zum Antworten