कारण अपनी नई छवि बड़ा अपने मूल है से SAVEAS समारोह की बचत होती है क्योंकि पूरे आंकड़ा खिड़की ही नहीं, कुल्हाड़ियों की सामग्री (जो जहां अपनी छवि को प्रदर्शित किया जाता है) है।
आपका प्रश्न बहुत एक और SO question के समान है, इसलिए मैं पहले दो प्राथमिक विकल्प उन जवाब से घिरा आपको बताएंगे:
कच्चे छवि डेटा संशोधित करें: आपकी छवि डेटा में संग्रहित है परिवर्तनीय I
, तो आप I
में छवि पिक्सेल मानों को सीधे संशोधित कर सकते हैं और IMWRITE का उपयोग कर संशोधित छवि डेटा को सहेज सकते हैं। आप इसे कैसे कर सकते हैं my answer और LiorH's answer में वर्णित हैं। यह विकल्प छवि के सरल संशोधनों के लिए सबसे अच्छा काम करेगा (जैसे एक आयत जोड़ना, क्योंकि उस प्रश्न से संबंधित था)।
संशोधित करें कि आंकड़ा कैसे सहेजा गया है: आप यह भी संशोधित कर सकते हैं कि आप आकृति को कैसे सहेजते हैं ताकि यह आपकी मूल छवि के आयामों से बेहतर मेल खा सके। आप इसे कैसे कर सकते हैं (PRINT और GETFRAME SAVEAS के बजाय फ़ंक्शंस का उपयोग करके) Azim, jacobko, और SCFrench के उत्तरों में वर्णित हैं। यह विकल्प वह है जो आप करना चाहते हैं यदि आप पाठ लेबल, तीर, या अन्य शामिल प्लॉट ऑब्जेक्ट्स के साथ छवि को ओवरले कर रहे थे।
पूरे आंकड़े को सहेजकर दूसरे विकल्प का उपयोग करना मुश्किल हो सकता है। विशेष रूप से, यदि आप एक छोटी छवि (700-बाय -700 पिक्सल कहें) में एक बड़ी छवि (1024-बाय-1024 पिक्सल कहें) की साजिश कर रहे थे तो आप छवि रिज़ॉल्यूशन खो सकते हैं। समायोजित करने के लिए आपको आकृति और अक्ष गुणों को सेट करना होगा। यहाँ एक उदाहरण समाधान है:
I = imread('peppers.png'); %# Load a sample image
imshow(I); %# Display it
[r,c,d] = size(I); %# Get the image size
set(gca,'Units','normalized','Position',[0 0 1 1]); %# Modify axes size
set(gcf,'Units','pixels','Position',[200 200 c r]); %# Modify figure size
hold on;
plot(100,100,'r*'); %# Plot something over the image
f = getframe(gcf); %# Capture the current window
imwrite(f.cdata,'image2.jpg'); %# Save the frame data
उत्पादन छवि image2.jpg
उस पर एक लाल तारांकन होना चाहिए और इनपुट छवि के रूप में एक ही आयाम होना चाहिए।
कितना बड़ा? महत्ता का क्रम? एक छोटा प्रतिशत? – Doresoom
क्षमा करें, मेरा मतलब साजिश में गैर-छवि क्षेत्र को सहेजना नहीं है। – Tim