WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Image acquisition toolbox stürzt bei getsnapshot ab

 

Debty
Forum-Newbie

Forum-Newbie


Beiträge: 1
Anmeldedatum: 05.08.13
Wohnort: Deutschland
Version: ---
     Beitrag Verfasst am: 05.08.2013, 17:02     Titel: Image acquisition toolbox stürzt bei getsnapshot ab
  Antworten mit Zitat      
Hi,
Ich habe mal die Suche beansprucht und auch was passendes gefunden jedoch wurde dort kein Lösung für mein Problem gepostet, nun noch einmal.
Das Problem liegt darin, dass nach einiger Zeit mein Programm abstürzt während getsnapshot mit folgendem crash-file:
MATLAB crash file:C:\Users\Andreas\AppData\Local\Temp\matlab_crash_dump.7380-1:


------------------------------------------------------------------------
(unknown signal) detected at Mon Aug 05 10:23:18 2013
------------------------------------------------------------------------

Configuration:
Crash Decoding : Disabled
Default Encoding: windows-1252
MATLAB Root : G:\Program Files\Matlab2012b
MATLAB Version : 8.0.0.783 (R2012b)
Operating System: Microsoft Windows 7
Processor ID : x86 Family 6 Model 58 Stepping 9, GenuineIntel
Virtual Machine : Java 1.6.0_17-b04 with Sun Microsystems Inc. Java HotSpot(TM) Client VM mixed mode
Window System : Version 6.2 (Build 9200)

Fault Count: 1


Abnormal termination:
(unknown signal)

Register State (from fault):
EAX = 4a1cf7e0 EBX = 00000000
ECX = 00000003 EDX = 00000000
ESP = 4a1cf7e0 EBP = 4a1cf83c
ESI = 4a1cf8fc EDI = 4a1cf8fc

EIP = 770e4b32 EFL = 00000212

CS = 00000023 DS = 0000002b SS = 0000002b
ES = 0000002b FS = 00000053 GS = 0000002b

Stack Trace (from fault):
[ 0] 0x770e4b32 C:\Windows\SYSTEM32\KERNELBASE.dll+00084786 ( RaiseException+000073 )
[ 1] 0x772b8e89 C:\Windows\WinSxS\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.6910_none_d089c358442de345\MSVCR80.dll+00167561 ( CxxThrowException+000070 )


If this problem is reproducible, please submit a Service Request via:
http://www.mathworks.com/support/contact_us/

A technical support engineer might contact you with further information.

Thank you for your help.


Die Kamera die ich verwende ist diese hier:
http://www.ptgrey.com/products/fire....._firewire_cmos_camera.asp

und mein Code:
Code:
%RESETS
clear all;
clc;
close all;
imaqreset;

%Set Camera Device
pointgrey = imaq.VideoDevice('pointgrey',1,'F7_BayerRG8_752x480_Mode0');

%Set Videoinput
vid = videoinput('pointgrey',1,'F7_BayerRG8_752x480_Mode0');
vid.FramesPerTrigger = Inf;
vid.Timeout=15;

%Set first picID
picID=0;

%Delaration of centroid positions
x_coord = zeros(1,3);
y_coord = zeros(1,3);

%Declaration of 'true' positions
posx = zeros(1,3);
posy = zeros(1,3);

%Declaration for calculation
x1 = zeros(1,3);
y1 = zeros(1,3);
x2 = zeros(1,3);
y2 = zeros(1,3);

%Offset x-axis (9°*3600''+12'*60''/'+37.18'') longitude
x0= [33157.18, 33157.18,33157.18];

%Offset y-axis (49°*3600''+7'*60''/'+24.34') latitude
y0= [176844.34,176844.34, 176844.34];

%Declaration of magnetic north pole in seconds (83° 57' 0''N, 120° 43'
%12''W)
x0_magNP = 120*3600+43*60+12; %Longitude
y0_magNP = 83*3600+57*60;     %Latitude

%Declaration of true angle
alpha = zeros(1,3);

%Declaration of magnetic course
beta = zeros(1,3);

%Declaration of degree of longitude variable
long_d = zeros(1,3); %degree
long_m = zeros(1,3); %minute
long_s = zeros(1,3); %second

%Declaration of degree of latitude variable
lat_d = zeros(1,3); %degree
lat_m = zeros(1,3); %minute
lat_s = zeros(1,3); %second

%Declaration of distances
distance = zeros(1,3);
distance_x = zeros(1,3);
distance_y = zeros(1,3);

%Declaration of velocity
veloc = zeros(1,3);
velockt = zeros(1,3);
velockmh = zeros(1,3);

%Declaration of time in int format
time1int = 0;
time2int = 0;
start(vid);
counter=0;

while(picID<3000)
   
    counter=counter+1;
   
    %Random number for simulation of HDOP(Horizontal dilution of precision)
    %formatted in String
    HDOP = random('Poisson',0,50); %Poisson for more values in better regions
    HDOPstr = sprintf('%1.2',HDOP);
   
    %Declaration of Date
    date = datestr(now,'ddmmyy');
    time1int=time2int;
   
    %Declaration of Time
    time2 = datestr(now,'HHMMSS');
   
    %Get Time in HourMinutesSeconds
    time2int = str2double(datestr(now,'HHMMSS'));
    %Get Milliseconds
    time2intms = str2double(datestr(now,'FFF'));
   
    time2int = time2int + time2intms/1000;
   
    %Calculate Duration between two steps
    duration = time2int-time1int;
   
    %Get Reference Snapshot
    snapshot1=getsnapshot(vid);
   
   
    %Define Colors
    R=snapshot1(:,:,1);
    G=snapshot1(:,:,2);
    B=snapshot1(:,:,3);
   
    %Calculate Red/Green/Blue range
    R1=R-G/2-B/2;
    G1=G-R/2-B/2;
    B1=B-R/2-G/2;
   
    %Detect coulor threshold
    bw_R = R1>120;
    bw_R = ~bw_R;
    bw_R=bwareaopen(bw_R,100);
    bw_R = ~ bw_R;
   
    bw_G = G1>50;
    bw_G = ~bw_G;
    bw_G=bwareaopen(bw_G,100);
    bw_G = ~ bw_G;
   
    bw_B = B1>50;
    bw_B = ~bw_B;
    bw_B=bwareaopen(bw_B,100);
    bw_B = ~ bw_B;
   
    %Filtering
    %Neibourhoodpixel filtering with medifilt2
    %Detect centroid in detected object
    %Mark and colour the detected object
    bw_R = medfilt2(bw_R, [5 5]);
    [BW_label_R, num1] = bwlabel(bw_R, 8);
    measurement_BW_R = regionprops(BW_label_R,'centroid');
    if num1==1
        x_coord(1) = measurement_BW_R.Centroid(1);
        y_coord(1) = measurement_BW_R.Centroid(2);
        if picID>0
            p_R = plot(x_coord(1),y_coord(1),'o');
            set(p_R,'Color','r','LineWidth',5);
        end
    end
   
    %Filtering
    %Neibourhoodpixel filtering with medifilt2
    %Detect centroid in detected object
    %Mark and colour the detected object
    bw_G = medfilt2(bw_G, [5 5]);
    [BW_label_G, num2] = bwlabel(bw_G, 8);
    measurement_BW_G = regionprops(BW_label_G,'centroid');
    if num2==1
        x_coord(2) = measurement_BW_G.Centroid(1);
        y_coord(2) = measurement_BW_G.Centroid(2);
        if picID>0
            p_G = plot(x_coord(2),y_coord(2),'o');
            set(p_G,'Color','g','LineWidth',5);
        end
    end
   
    %Filtering
    %Neibourhoodpixel filtering with medifilt2
    %Detect centroid in detected object
    %Mark and colour the detected object
    bw_B = medfilt2(bw_B, [5 5]);
    [BW_label_B, num3] = bwlabel(bw_B, 8);
    measurement_BW_B = regionprops(BW_label_B,'centroid');
    if num3==1
        x_coord(3) = measurement_BW_B.Centroid(1);
        y_coord(3) = measurement_BW_B.Centroid(2);
        if picID>0
            p_B = plot(x_coord(3),y_coord(3),'o');
            set(p_B,'Color','bl','LineWidth',5);
        end
    end
   
    %Quantity of all detected objects
    num = num1+num2+num3;
   
    %If more or less than three objects detected navigation failure
    if num >0 && num<4
        status = 'A';
    else
        status = 'V';
    end
   
    %Show detected object in Black and White video
    BW_label = BW_label_R + BW_label_G + BW_label_B;
    hold off;
    figure(1);
    imshow(BW_label);
    hold on;
   
    %count pictures calculated
    picID=picID+1;
   
    j=1;
    for j=1:3
        %Converting from pixel in picture to pixel per meter
        posx(j) = x_coord(j)*5.32/1000;
        posy(j) = y_coord(j)*6.25/1000;
       
        x1(j) = x2(j);
        y1(j) = y2(j);
        x2(j) = posx(j);
        y2(j) = posy(j);
       
        % Calculation of traveled distance [m]
        distance(j) = sqrt((x2(j)-x1(j)).^2+(y2(j)-y1(j)).^2);
       
        %Calculation of Moving direction (angle in °)
        alpha(j) = atan(sqrt(distance_y(j)^2)/sqrt(distance_x(j)^2));
        alpha(j) = alpha(j)*360/(2*pi);
        if distance_x(j)<0
            alpha(j) = 180-alpha(j);
        end
        switch j
            case 1
                alphastr1=sprintf('%1.1f',alpha(1));
            case 2
                alphastr2=sprintf('%1.1f',alpha(2));
            case 3
                alphastr3=sprintf('%1.1f',alpha(3));
        end
       
        %Calculation of magnetic course
        distance_x_O_NP = x0_magNP+x0(j);
        distance_y_O_NP = y0_magNP-y0(j);
        beta(j) = atan(distance_y_O_NP/distance_x_O_NP);
        switch j
            case 1
                betastr1=sprintf('%1.1f',beta(1));
            case 2
                betastr2=sprintf('%1.1f',beta(2));
            case 3
                betastr3=sprintf('%1.1f',beta(3));
        end
       
        %Calculation of velocity [m/s]
        veloc(j) = distance(j)/duration;
       
        %Calculation of velocity [km/h]
        velockmh(j) = veloc(j)*3.6;
        switch j
            case 1
                velockmhstr1=sprintf('%1.1f',velockmh(1));
            case 2
                velockmhstr2=sprintf('%1.1f',velockmh(2));
            case 3
                velockmhstr3=sprintf('%1.1f',velockmh(3));
        end
        %Calculation of velocity [Knoten]
        velockt(j) = veloc(j)*1.9438612860586;
        switch j
            case 1
                velocktstr1=sprintf('%1.1f',velockt(1));
            case 2
                velocktstr2=sprintf('%1.1f',velockt(2));
            case 3
                velocktstr3=sprintf('%1.1f',velockt(3));
        end
       
        %Distance in x and y [m]
        distance_x(j)=x2(j)-x1(j);
        distance_y(j)=y2(j)-y1(j);
       
        %Calculation of position in angle seconds['']
        %
        x0(j) = x0(j) + distance_x(j)*0.0323/cos(lat_d(j)*(2*pi)/360);
        %
        y0(j) = y0(j) + distance_y(j)*0.0324;
       
        %Position convertion in degree of latitude
        lat_d(j) = floor(y0(j)/3600);
        lat_m(j) = (y0(j)-floor(y0(j)/3600)*3600)/60;
       
        %Position convertion in degree of longitude
        long_d(j) = floor(x0(j)/3600);
        long_m(j) = (x0(j)-floor(x0(j)/3600)*3600)/60;
        %Generating zeros for fitting format
        if long_d(j)<10
            switch j
                case 1
                    long_d_str1 = strcat('00',num2str(long_d(1)));
                case 2
                    long_d_str2 = strcat('00',num2str(long_d(2)));
                case 3
                    long_d_str3 = strcat('00',num2str(long_d(3)));
            end
        else
            if long_d(j)>10 && long_d(j)<100
                switch j
                    case 1
                        long_d_str1 = strcat('0',num2str(long_d(1)));
                    case 2
                        long_d_str2 = strcat('0',num2str(long_d(2)));
                    case 3
                        long_d_str3 = strcat('0',num2str(long_d(3)));
                end
            end
        end
       
       
        %Convertion into GPS format
        switch j
            case 1
                %Velocity isnt in the right format(velockt)
                %Generating of the GMPRMC for Object 1
                if num1 == 1
                    GPRMCred=strcat('$GPRMC,',time2,',',status,',',num2str(lat_d(1)),num2str(lat_m(1)),',N,',...
                        long_d_str1,num2str(long_m(1)),',E,',velocktstr1,',',alphastr1,',',...
                        date,',,,');
                    disp(GPRMCred);
                    fprintf('\n');
                    %Generating of the GPGGA for Object 1
                    GPGGAred=strcat('$GPGGA,',time2,',',status,',',num2str(lat_d(1)),num2str(lat_m(1)),',N,',...
                        long_d_str1,num2str(long_m(1)),',E,','0,,',HDOPstr,',,,,,,');
                   
                    %Generating of th GPVTG for Object 1
                    GPVTGred = strcat('$GPVTG,',alphastr1,',T,',betastr1,',M,',velocktstr1,',N,',...
                        velockmhstr1,',K');
                end
               
            case 2
               
                %Velocity isnt in the right format(velockt)
                %Generating of the GMPRMC for Object 2
                if num2 == 1
                    GPRMCgreen=strcat('$GPRMC,',time2,',',status,',',num2str(lat_d(2)),num2str(lat_m(2)),',N,',...
                        long_d_str2,num2str(long_m(2)),',E,',velocktstr2,',',alphastr2,',',...
                        date,',,,');
                    disp(GPRMCgreen);
                    fprintf('\n');
                    %Generating of the GPGGA for Object 2
                    GPGGAgreen=strcat('$GPGGA,',time2,',',status,',',num2str(lat_d(2)),num2str(lat_m(2)),',N,',...
                        long_d_str2,num2str(long_m(2)),',E,','0,,',HDOPstr,',,,,,,');
                   
                    %Generating of th GPVTG for Object 2
                    GPVTGgreen = strcat('$GPVTG,',alphastr2,',T,',betastr2,',M,',velocktstr2,',N,',...
                        velockmhstr2,',K');
                end
            case 3
                %Velocity isnt in the right format(velockt)
                %Generating of the GMPRMC for Object 3
                if num3==1
                    GPRMCblue=strcat('$GPRMC,',time2,',',status,',',num2str(lat_d(3)),num2str(lat_m(3)),',N,',...
                        long_d_str3,num2str(long_m(3)),',E,',velocktstr3,',',alphastr3,',',...
                        date,',,,');
                    disp(GPRMCblue);
                    fprintf('\n');
                    %Generating of the GPGGA for Object 3
                    GPGGAblue=strcat('$GPGGA,',time2,',',status,',',num2str(lat_d(3)),num2str(lat_m(3)),',N,',...
                        long_d_str3,num2str(long_m(3)),',E,','0,,',HDOPstr,',,,,,,');
                   
                    %Generating of th GPVTG for Object 3
                    GPVTGblue = strcat('$GPVTG,',alphastr3,',T,',betastr3,',M,',velocktstr3,',N,',...
                        velockmhstr3,',K');
                end
        end
    end
    fprintf('\n\n');
   
    %Acquisition limit
    disp(picID);
    if counter==200
        stop(vid);
        pause(0.01);
        counter=0;
        start(vid);
    end
   
end
%STOP
stop(vid);
close all;
%clear all;
 


ich hoffe ihr könnt mir hier etwas helfen, das Programm sollte eigentlich while(1) laufen bzw while(trigger) die picID ist im moment nur vorhanden um eben die Dauer ein bisschen zu begrenzen.

Grüße
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 05.08.2013, 17:11     Titel:
  Antworten mit Zitat      
warum clear all mist ist steht hir in jedem 2. beitrag Smile ^^
wenn matlab abstürzt würde ich mich mal an den support wenden.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.