Verfasst am: 17.12.2014, 17:46
Titel: Graubild ausschnitt mit boundingbox geht das ?
Hi
ich wollte in einem Bild Quadarte erkenne und diese dann ausschneiden als eigene Graubilder und diese dann in einer liste abspeichern um dadrüber einen Kreis erkenner laufen zu lassen.
mein ansatzt ist diese:
Code:
%cameList = webcamlist;
%Verbinden mit der Camera
cam = webcam(1);
%bildmachen
%rgbImage=snapshot(cam);
%für die liste
bildausschnit={};
i=0;
rgbImage=imread('testbild2.jpg');
%bild konvertiere
%grayImage=rgb2gray(rgbImage);
% Umwandeln des Graustufenbildes in ein schwarz/weißbild-Bild
bbw = ~im2bw(rgbImage,graythresh(rgbImage));
% Hier werden alle schwarzen Bereiche, die komlett von weißen Bereichen umgeben sind, auf weiß gesetzt
bfill = imfill(bbw,'holes');
barea = bwareaopen(bfill,1);
%Hier werden alle Bereiche gelabelt
bfinal = bwlabel(barea);
%quadrat matrix erstellen
start = regionprops(bfinal,'boundingbox');
%bildzeigen
imshow(rgbImage); hold on;
%Quadrate finde und markiren
for cnt = 1 : numel(start)
%Quadratfinden
bb = start(cnt).BoundingBox;
%Quadratmarkiren
rectangle('position',bb,'edgecolor','r','linewidth',1);
bb2=int32(bb);
bildausschnit{i}=grayImage(bb2);
i=i+1;
end
danke für die hilfe nun habe ich ein neues problem nämlich das er :
Error using kreiserkennung (line 39)
Not enough input arguments.
so sieht der cod aus:
function kreisgefunden = kreiserkennung(kreisgefunden2)
cameList = webcamlist;
%Verbinden mit der Camera
cam = webcam(1);
%bildmachen
rgbImage=snapshot(cam);
kreisgefunden1=0;
%rgbImage=imread('testbild2.jpg');
%bild konvertiere
grayImage=rgb2gray(rgbImage);
% Umwandeln des Graustufenbildes in ein schwarz/weißbild-Bild
bbw = ~im2bw(rgbImage,graythresh(rgbImage));
% Hier werden alle schwarzen Bereiche, die komlett von weißen Bereichen umgeben sind, auf weiß gesetzt
bfill = imfill(bbw,'holes');
barea = bwareaopen(bfill,1);
%Hier werden alle Bereiche gelabelt
bfinal = bwlabel(barea);
%quadrat matrix erstellen
start = regionprops(bfinal,'boundingbox');
%bildzeigen
imshow(rgbImage); hold on;
%Quadrate finden und Kreise
for cnt = 1 : numel(start)
%Quadratfinden
bb = start(cnt).BoundingBox;
%Quadratmarkiren
rectangle('Position',start(cnt).BoundingBox);
ausschnitt=imcrop(grayImage,start(cnt).BoundingBox);
%kreise suche
[centers, radii, metric]= imfindcircles(ausschnitt,[1 50]);
%kreis gefunden ja?/nein?
if centers~= 0;
%falls gefunden dann umspeichern
kreisgefunden1 = ausschnitt;
%hast du ihn schon gefunden dann nichts machen
if kreisgefunden2~=kreisgefunden1
%ansonsten abspeichern
kreisgefunden=kreisgefunden1;
end
end
end
end
Einstellungen und Berechtigungen
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
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.