Ich versuche, jedes Rechteck in einem Bild als separate JPEG-Bild zu speichern, um ein neuronales Netzwerk trainieren zu können. das ist, wie ich ein Rechteck über Lastwagen ziehen:Wie trennt und speichert man einen Teil eines Bildes?
function hdl = BBox(img, samp)
I = imread(img);
hdl = imshow(img);
hold on;
s = size(samp,1);
for i=1:s
bbox = samp(i,:);
X = [bbox(3)-(bbox(5)), bbox(3)-(bbox(5)), bbox(3)-(bbox(5))+2*bbox(5), bbox(3)-(bbox(5))+2*bbox(5), bbox(3)-(bbox(5))];
Y = [bbox(4)-(bbox(6)), bbox(4)-(bbox(6))+2*bbox(6), bbox(4)-(bbox(6))+2*bbox(6), bbox(4)-(bbox(6)), bbox(4)-(bbox(6))];
Cx = bbox(3);
Cy = bbox(4);
H = [X;Y;ones(1,5)]; %// points as 3D homogeneous coordinates
Tc = [1 0 -Cx; 0 1 -Cy; 0 0 1]; %// translation as a matrix
Tr = [cosd((-bbox(7))) -sind((-bbox(7))) 0; sind((-bbox(7))) cosd((-bbox(7))) 0; 0 0 1]; %// rotation
Hr = inv(Tc) * Tr * Tc * H; %// all transformations as matrix products
plot(Hr(1,:), Hr(2,:)); %// the rotated rect
disp(Hr);
end
Ich glaube nicht die imcrop Befehl funktioniert für gedrehte Rechtecke.
Wie kann ich jedes Rechteck als ein anderes Bild speichern?
danke für die Funktion. Zum Thema MachineLearning hoffe ich, dass Sie mir sagen können: Muss ich jedes Fahrzeug so trennen, dass es ein CNN mit tiefen Lernerfahrungen schafft oder nicht? Ich möchte einen CNN trainieren, um Fahrzeuge in einem Satellitenbild zu erkennen. –
@HadiGhahremanNezhad Ich denke, es würde definitiv helfen. Stellen Sie einfach fest, dass Sie das Modell dann trainieren, um zu erkennen, ob ein ausgeschnittenes Rechteck ein Fahrzeug ist. (Ich nehme an, Sie werden auch viele andere Gegenstände ausschneiden?). Wenn Ihr Ziel ist zu erkennen, ob ein Bild ein Fahrzeug enthält, bin ich mir nicht sicher, ob Sie es ausschneiden sollten, da auch die Umgebung relevant sein könnte. –