tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von deepthroat
ERLEDIGT
JA
ANTWORTEN
9
ZUGRIFFE
391
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    asdasfsdfdsf asdasfsdfdsf ist offline Mitglied Bronze
    Registriert seit
    Oct 2011
    Beiträge
    31
    Hi Leute,
    immer wenn ich die Methode cvtcolor() aufrufen möchte um beispielsweise vom RGB in den HSV farbraum zu wechseln bekomme ich folgenden Fehler:

    "Unhandled exception at 0x7684b9bc in blatt4aufg2.exe: Microsoft C++ exception: cv::Exception at memory location 0x0023c64c.."

    Ich weiß einfach nicht wo der Fehler liegt.
    Für Hilfe wäre ich sehr dankbar!
     

  2. #2
    asdasfsdfdsf asdasfsdfdsf ist offline Mitglied Bronze
    Registriert seit
    Oct 2011
    Beiträge
    31
    ich hab den Code ganz vergessen...
    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    
    #include <opencv2/opencv.hpp>
    using namespace cv;
    #include <iostream>
    using namespace std;
     
    int main(){
        VideoCapture video("C:/Users/.../Documents/bla.wmv");
        int width = video.get(CV_CAP_PROP_FRAME_WIDTH);
        int height = video.get(CV_CAP_PROP_FRAME_HEIGHT);
     
        
        namedWindow("Video");
        namedWindow("erstes Frame");
        namedWindow("Maske");
        Mat firstFrame;
        Mat binaerMaske(height, width, CV_8UC3);
     
        
        int frameNumber = 0;
        int zaehler=0;
        int ysumme=0;
        int xsumme=0;
        double mittelwertx=0;
        double mittelwerty=0;
        while(true){
            Mat videoFrame;
            Mat videoFrame2(videoFrame.rows,videoFrame.cols,CV_8UC3);
            //cvtColor(videoFrame,videoFrame2,CV_BGR2HSV);
            if (video.read(videoFrame) == false){
                break;
            }
            frameNumber++;
            if(frameNumber == 1){
                videoFrame.copyTo(firstFrame);
            }
            for(int x = 0; x < videoFrame.cols; x++){
                for (int y = 0; y < videoFrame.rows; y++){
                    Vec3b pixelVideo = videoFrame.at<Vec3b>(y, x);
                    Vec3b pixelFirstFrame = firstFrame.at<Vec3b>(y,x);
     
                    int helligkeitPixelVideo = 
                        (pixelVideo[0] + pixelVideo[1] + pixelVideo[2])/3;
                    int helligkeitPixelFirstFrame =
                        (pixelFirstFrame[0] + pixelFirstFrame[1] + pixelFirstFrame[2])/3;
     
                    int schwelle = 20;
                    if(abs(helligkeitPixelVideo - helligkeitPixelFirstFrame) > schwelle){
                        // Vordergrund
                        Vec3b white (255,255,255);
                        binaerMaske.at<Vec3b>(y,x) = white;
                        zaehler++;                          //zaehlen wie viele weiße es gibt
                        xsumme=xsumme+x;
                        ysumme=ysumme+y;
                    }
                    else{
                        // Hintergrund
                        Vec3b blueback (255,0,0);
                        binaerMaske.at<Vec3b>(y,x) = blueback;
                    }
                }
            }
     
            if (zaehler!=0){
                xsumme=xsumme/zaehler;
                ysumme=ysumme/zaehler;
            }
            zaehler=0;
            Point schwerpkt (xsumme,ysumme);
            Point linestart(xsumme,ysumme-20);
            Point linestart2(xsumme-20,ysumme);
            Point lineend(xsumme,ysumme+20);
            Point lineend2(xsumme+20,ysumme);
            Point pt2 (xsumme+20,ysumme+20);
     
            line(binaerMaske, linestart, lineend, Scalar(0,255,0), 1, 8, 0);
            line(binaerMaske, linestart2, lineend2, Scalar(0,255,0), 1, 8, 0);
            cout<<"xsumme: "<<xsumme<<endl;
            cout<<"ysumme: "<<ysumme<<endl;
            cout<<"zahler: "<<zaehler<<endl;
            imshow("Video", videoFrame);
            imshow("erstes Frame", firstFrame);
            imshow("Maske", binaerMaske);
            waitKey(30);
        }
    }
    Geändert von sheel (16.10.11 um 22:12 Uhr) Grund: Codetags
     

  3. #3
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    Hi

    Bitte in Zukunft die Codetags (siehe Signatur) verwenden.

    In welcher Zeile tritt der Fehler auf?
     
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

  4. #4
    asdasfsdfdsf asdasfsdfdsf ist offline Mitglied Bronze
    Registriert seit
    Oct 2011
    Beiträge
    31
    Hi,
    da steht nirgends in welcher zeile der fehler auftritt. sobald ich cvtColor "auskommentiere" funktioniert nämlich alles, also nehme ich an das es an der funktion liegt.
    Das steht im outputfenster von visual (nachdem alle dlls geladen worden sind):

    First-chance exception at 0x7684b9bc in blatt4aufg2.exe: Microsoft C++ exception: cv::Exception at memory location 0x0022c754..
    Unhandled exception at 0x7684b9bc in blatt4aufg2.exe: Microsoft C++ exception: cv::Exception at memory location 0x0022c754..
    The program '[2040] blatt4aufg2.exe: Native' has exited with code -529697949 (0xe06d7363).

    des weiteren öffnet sich neben der main.cpp auch noch ein fenster das "xstring" heißt.
     

  5. #5
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    Geh bitte trotzdem mit dem Debugger mal im Einzelschritt durch,
    dann findest du die Zeile sicher.
     
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

  6. #6
    asdasfsdfdsf asdasfsdfdsf ist offline Mitglied Bronze
    Registriert seit
    Oct 2011
    Beiträge
    31
    hmm wie mach ich das denn?
     

  7. #7
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    F10 drücken für die erste Zeile.
    Mit F10 in die nächste Zeile.
    Mit F10 in die nächste...
    Sobald eine Fehlermeldung kommt, hast du die Fehlerzeile.
     
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

  8. #8
    asdasfsdfdsf asdasfsdfdsf ist offline Mitglied Bronze
    Registriert seit
    Oct 2011
    Beiträge
    31
    super, danke. also der debug wird bei "cvtColor(videoFrame,videoFrame2,CV_BGR2HSV);" abgebrochen mit der gleichen fehlermeldung.

    in zeile 3: "int width = video.get(CV_CAP_PROP_FRAME_WIDTH);" erscheint im command window ein text mit
    "ignoring invalid packet_obj_size size"
    "freeing incomplete packet size"
    Geändert von asdasfsdfdsf (16.10.11 um 23:41 Uhr)
     

  9. #9
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.
    Zitat Zitat von asdasfsdfdsf
    Code c:
    1
    2
    
     Mat videoFrame;
            Mat videoFrame2(videoFrame.rows,videoFrame.cols,CV_8UC3);
    Was machst du denn hier? Müßtest du nicht videoFrame erstmal mit irgendwas initialisieren (z.B. mit einem Frame aus dem Video?), bevor du auf .rows und .cols zugreifst?

    Gruß
    asdasfsdfdsf bedankt sich. 
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  10. #10
    asdasfsdfdsf asdasfsdfdsf ist offline Mitglied Bronze
    Registriert seit
    Oct 2011
    Beiträge
    31
    Hi
    vielen dank, dass war die lösung. ich habe cvtcolor() erst nach dem einlesen aufgerufen und es geht

    Grüße und Thumbs up!
     

Ähnliche Themen

  1. opencv: cvtColor
    Von asdasfsdfdsf im Forum C/C++
    Antworten: 26
    Letzter Beitrag: 09.10.11, 23:13
  2. unhandled exception in StdioFile.ReadString
    Von cheristi im Forum C/C++
    Antworten: 0
    Letzter Beitrag: 15.07.08, 17:31
  3. Unhandled exception
    Von baeman im Forum VisualStudio & MFC
    Antworten: 0
    Letzter Beitrag: 20.06.07, 17:10
  4. Unhandled exception...
    Von baeman im Forum VisualStudio & MFC
    Antworten: 7
    Letzter Beitrag: 26.01.06, 10:24
  5. An unhandled exception - Doch warum
    Von Konstantin Gross im Forum .NET Archiv
    Antworten: 7
    Letzter Beitrag: 09.03.04, 22:03

Stichworte