jjpag Δημοσ. 24 Σεπτεμβρίου 2013 Δημοσ. 24 Σεπτεμβρίου 2013 Θα ήθελα τη βοήθεια σας σε κάτι πολύ απλό στην matlab:Πως μπορώ να τοποθετώ μια εικόνα πάνω σε μια άλλη σε συγκεκριμένη θέση και να παίρνω στο τέλος το αποτέλεσμα σαν νέα εικόνα . Έχω καταφέρει να βάλω κείμενο πάνω σε εικόνα (σε όποιο σημείο θέλω) με τον παρακάτω κώδικα:img=imread('c:\q.jpg','jpg');hfig=figure;imshow(img);hold on;text(300,300,'insomnia','FontSize',26,'color',[1,0,0],'EdgeColor','red','LineWidth',3);orig_mode = get(hfig, 'PaperPositionMode');set(hfig, 'PaperPositionMode', 'auto');img_with_text = hardcopy(hfig, '-Dzbuffer', '-r0'); Στο σημείο δηλαδή (300,300) της εικόνας "q.jpg"γράφω το text:insomnia Με κάποιο τρόπο θα ήθελα αντί για κείμενο να βάλω μια εικόνα στο σημείο αυτό.Σκαλίζοντας στο internet βρήκα κάτι σχετικό αλλά βλέπω οτι σε περιορίζει στο να βάλεις τη δεύτερη εικόνα στην πάνω αριστερή γωνία της πρώτης....και όχι σε οποιο σημείο θέλεις..:img=imread('c:\q.jpg','jpg');img2=imread('c:\r.jpg','jpg');[m, n, ~] = size(img2);img(1:m,1:n,= img2;imshow(img); Αν μπορεί καποιος να βοηθησει... Ευχαριστώ!
Technology fan Δημοσ. 24 Σεπτεμβρίου 2013 Δημοσ. 24 Σεπτεμβρίου 2013 Εφόσον θέλεις να χειριστείς εικόνες μόνο γιατί μπλέκεις με έτοιμες συναρτήσεις και δεν γράφεις κάτι μόνος σου? πχ, θα θεωρήσω μια εικόνα Α και την μικρή Β που θέλεις να την βάλεις επάνω στην Α στο σημείο (300,300). Για απλότητα θεωρώ οτι είναι ασπρόμαυρες, και οτι η Β χωράει ολόκληρη στην A [xa ya ]= size(A); % no need [xb yb ]= size(; C=A; % i eikona eksodou % de mporw na skeftw twra poio einai to swsto apo ta parakatw mallon to 2o... C(300:300+xb,300:300+yb)=B; C(300:300+xb-1,300:300+yb-1)=B; στη περίπτωση που δεν χωράει όλη, πρέπει να κάνεις κατάλληλες ελέγχους και αλλαγές.
Timonkaipumpa Δημοσ. 24 Σεπτεμβρίου 2013 Δημοσ. 24 Σεπτεμβρίου 2013 Στην γραμμή img(1:m, 1:n, : ) = img2 είναι που γίνεται η επικάλυψη. Απλά θα πρέπει να φροντίσεις η μετάθεση του αρχικού σημείου (1:m, 1:n) να γίνει τόσα σημεία όσα χωράνε στο πρώτο image που έχεις. Εάν, π.χ., θα ήθελες να πάει στην μέση ή, εάν δεν χωράει, όσο πιο πριν τότε θα είχες κάτι σαν: horOffset = 300; verOffset = 400; if (size(img2, 1) + verOffset) > size(img, 1) verOffset = size(img, 1) - size(img2, 1); end if (size(img2, 2) + horOffset) > size(img, 2) horOffset = size(img, 2) - size(img2, 2); end img(verOffset:size(img2, 1), horOffser:size(img2, 2), : ) = img2; Με την προϋπόθεση ότι: size(img, 1) > size(img2, 1) και size(img, 2) > size(img2, 2) 1
insomniaK Δημοσ. 25 Σεπτεμβρίου 2013 Δημοσ. 25 Σεπτεμβρίου 2013 Ακολούθα το παράδειγμα "plot_in_plot" στο matlabcentral.
jjpag Δημοσ. 2 Οκτωβρίου 2013 Μέλος Δημοσ. 2 Οκτωβρίου 2013 Σας ευχαριστώ όλους. Τελικά το εφτιαξα με τον παρακάτω τρόπο και δουλευει: clear;img1=imread('c:\a.png','png');img2=imread('c:\b.png','png'); [m, n, ~] = size(img2);img1(50:(50+m-1),100:(100+n-1), = img2;imshow(img1); ----------------- Τώτα όμως έχω άλλο πρόβλημά !!! Παρόλο που το εικονίδιο (b.png) που θέλω να τοποθετίσω πάνω από την εικόνα (a.png) έχει διάφανο background όταν μπαίνει πάνω από την εικόνα εμφανίζεται με μαύρο background! Τι μπορώ να κάνω ώστε να μη γίνεται αυτό? Σας επισυνάπτω τις είκόνες και το αποτέλεσμα. "a.png" http://s16.postimg.org/ssvt7d11h/image.png "b.png" http://s14.postimg.org/fitbkpna5/image.png "new.png" http://s14.postimg.org/itmqhpjj5/new.png Σας ευχαριστώ και πάλι jjpag
Technology fan Δημοσ. 2 Οκτωβρίου 2013 Δημοσ. 2 Οκτωβρίου 2013 Περίεργο μου φαίνεται οτι είναι μαύρο, τέσπα μια γρήγορη αλλά ίσως να μην έχει να αποτελέσματα που θέλεις λύση είναι η εξής: img2(img2==0)=256; % αντικατάσταση όλων των μαύρων pixel με άσπρο χρώμα, img1(50:(50+m-1),100:(100+n-1),: )= img2; Κάνοντας λίγο πιο δύσκολο θα μπορούσες να βρεις τις θέσεις όπου είναι άσπρο και να μην αντικαταστήσεις τα pixel της εικόνας a σε εκείνες τις θέσεις όπου είναι άσπρο...
Timonkaipumpa Δημοσ. 2 Οκτωβρίου 2013 Δημοσ. 2 Οκτωβρίου 2013 Δες εδώ: http://www.mathworks.com/support/solutions/en/data/1-1AK7N/ http://blogs.mathworks.com/steve/2009/02/18/image-overlay-using-transparency/ http://www.mathworks.com/matlabcentral/newsreader/view_thread/243231 1
jjpag Δημοσ. 2 Οκτωβρίου 2013 Μέλος Δημοσ. 2 Οκτωβρίου 2013 Η εικόνα b.png έχει διαφάνεια δεν έιχει ασπρο background επρεπε το αποτελεσμα να είναι καπως έτσι: http://s13.postimg.org/ueg1rl4qv/sosto.png
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα