2016-10-16 4 views
0

Hallo an alle, bitte ich brauche Hilfe mit diesem Problem.Ich habe eine Matlab-Funktion, die einen Wert 'pourcentage' zurückgibt ich möchte diesen Wert in PHP-Datei abrufen. hier ist meine FunktionMatlab Funktion Ausgabe in PHP

function A=computeSIFT(input_img_path) 
    fabric = imread(input_mg_path); 
    I = rgb2gray(fabric); 
    %I=histeq(I,255); 
    %I=floor(I/8); 
    maxi = max(I(:)) 
    seuil = maxi-50 
    for k=1:size(I,1) 
for j=1:size(I,2) 
    if(I(k,j)<seuil) 
     I(k,j)=0; 
    else 
     I(k,j)=255; 
    end 
end 
end 
[~, threshold] = edge(I, 'sobel'); 
fudgeFactor = .5; 
BWs = edge(I,'sobel', threshold * fudgeFactor); 
figure, imshow(BWs), title('binary gradient mask'); 
se90 = strel('line', 3, 90); 
se0 = strel('line', 3, 0); 
BWsdil = imdilate(BWs, [se90 se0]); 
figure, imshow(BWsdil), title('dilated gradient mask'); 
BWdfill = imfill(BWsdil, 'holes'); 
figure, imshow(BWdfill); 
title('binary image with filled holes'); 
BWnobord = imclearborder(BWdfill, 4); 
figure, imshow(BWnobord), title('cleared border image'); 
seD = strel('diamond',1); 
BWfinal = imerode(BWnobord,seD); 
BWfinal = imerode(BWfinal,seD); 
figure, imshow(BWfinal), title('segmented image'); 
BWoutline = bwperim(BWfinal); 
Segout = I; 
Segout(BWoutline) = 255; 
figure, imshow(Segout), title('outlined original image'); 
white=0; 
black=0; 
for z=1:size(I,1) 
for m=1:size(I,2) 
    if I(z,m)==0 
     black=black+1; 
    else 
     white= white+1; 
    end 
end 
end 
black 
white 
pourcentage = (white/(size(I,1)*size(I,2)))*100 
A=pourcentage; 
end 

und das ist mein PHP-Code:

$command = "matlab -nojvm -r \"A=computeSIFT('$target_path');exit\""; 
system($command,$output); 


$response['message'] = 'yeeeeeeeeeeeeees'.$output; 

wie kann ich die pourcentage in $ Ausgabe abrufen ??

Antwort

0
  1. Ihre matlab Funktion Ausgabe sollte es auf der Konsole führen ist (mit disp oder fprintf).
    (Sie sollten versuchen, die Funktionslinie in $command in Ihrer Shell (cmd/Linux-Shell) zu laufen, um zu sehen, wenn Sie eine Ausgabe erhalten.)

  2. -PHP system Funktion nur die letzte Zeile der Ausgabe zurückgibt (und es ist ein Rückgabewert, es ist nicht der zweite Parameter).
    Wenn Sie ok mit der letzten Zeile nur, Sie


$output = system($command); 

verwenden Wenn Sie die enitre Ausgang des Anrufs benötigen, können Sie die shell_exec Funktion:

$output = shell_exec($command);