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

normxcorr2 und Bilderdatenbank

 

KeRo
Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 28.01.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.12.2017, 09:22     Titel: normxcorr2 und Bilderdatenbank
  Antworten mit Zitat      
Hallo MATLAB'er,

ich benötige etwas Hilfestellung bei folgendem Projekt.

Mein Ziel ist es Karten beim Onlinepoker zu erkennen und damit in Matlab weiterarbeiten zu können.

Das funktioniert mit normxcorr2 und nur einer Karte einwandfrei.

1.Screencapture:
Code:
I = rgb2gray(screencapture(0, 'Position', [960 392 960 688]));

2. Template Karte laden:
Code:
C = rgb2gray(imread('db_cards/9d.jpg'));

3. mit normxcorr2 vergleichen:
Code:
R = normxcorr2(C,I)

4. anschließend mit insertShape markieren:
Code:
RGB = insertShape(Irgb, 'rectangle', [c-5 r-5 Cc+10 Cr+10], 'LineWidth', 2, 'color', 'magenta');


Jetzt kommt Ihr ins Spiel. Es muss ja nicht nur eine Karte verglichen werden, sondern 52 Karten. Wie vergleicht man die Kartendatenbank (52Stk) mit den Karten auf dem Pokertisch? Man müsste ja 52 Karten mit einem Screencapture vergleichen.
Im Anschluss brauch ich auch eine Rückgabe welche Karten tatsächlich gefunden wurden.

Beispiel: Ich screencapture den Flop. Das heißt, ich muss 3 Karten erkennen, diese anschließend markieren und in 3 Variablen übergeben um damit weiterarbeiten zu können.

Ich hoffe Ihr habt da einen Ansatz für mich.

Mein bisheriger Code nochmal als Ganzes:

Code:
for n = 1:1

%Capture Screen    
Irgb = screencapture(0, 'Position', [960 392 960 688]);

I = rgb2gray(screencapture(0, 'Position', [960 392 960 688]));
[Ir Ic ]=size(I);
figure(3),imshow(I);

pause(2)

%read Cardstemplates
C = rgb2gray(imread('db_cards/9d.jpg'));
[Cr Cc ]=size(C); %get template size

%looking for correlation
R = normxcorr2(C,I)
R = imcrop(R, [Cc Cr Ic Ir]);
[r c v] = find(R==(max(max(R))))

%show found correlation
RGB = insertShape(Irgb, 'rectangle', [c-5 r-5 Cc+10 Cr+10], 'LineWidth', 2, 'color', 'magenta');
%RGB = insertText(Irgb, [c r], '9d', 'FontSize',20,'TextColor', 'white');

imshow(RGB)

pause(1)
disp(n)

end


Vielen Dank,
Private Nachricht senden Benutzer-Profile anzeigen


sqk88024
Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 14.01.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.01.2018, 20:55     Titel:
  Antworten mit Zitat      
Wäre es denn möglich drei einzelne Screenshots zu erstellen. Alle drei einzeln abzuspeichern und drei separate Vergleiche durchzuführen. Quasi was schon programmiert ist einach drei mal laufen lassen ?
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.