मैंने एक मोज़ेक छवि बनाई है, जैसे कि एक बड़ी तस्वीर में कई छोटे चित्र होते हैं। मैं इस छवि को matplotlib व्यूअर में ठीक देख सकता हूं और मैं सभी छोटे चित्रों को देखने के लिए ज़ूम इन कर सकता हूं। लेकिन जब मैं छवि को सहेजता हूं, विस्तार से कोई फर्क नहीं पड़ता, छवि ज़ूम क्षमता खो देती है जैसे ज़ूम इन करते समय छोटी छवियां धुंधली हो जाती हैं। क्या छवि को पूर्ण रिज़ॉल्यूशन में सहेजने का कोई तरीका है? मेरे पास आरजीबी में एक numpy सरणी में छवि है, इसलिए यदि अन्य पुस्तकालय अधिक उपयुक्त हैं जो भी काम करेंगे।

1
Casper Smit 9 जुलाई 2021, 11:41

2 जवाब

मुझे लगता है कि आपको यहां विंडोज के फोटो एप्लिकेशन द्वारा गुमराह किया जा रहा है, जो बहुत अधिक ज़ूम करने पर स्वचालित रूप से धुंधला हो जाता है।

Matplotlib द्वारा सभी पिक्सेल मानों के साथ छवि को सही ढंग से सहेजा जा रहा है, आप लोड की गई छवि के पिक्सेल पर फिर से ज़ूम करके इसे देख सकते हैं।

import numpy as np

import matplotlib.pyplot as plt
import matplotlib.image as mpimg


# save image

array = np.random.random((4000, 4000, 3))
plt.imsave("save.png", array)


# load image

img = mpimg.imread("save.png")
plt.imshow(img)
plt.show()
2
Tartempion 9 जुलाई 2021, 12:12

दूसरा विकल्प वह छोटी लाइब्रेरी है जिसे मैंने numpngw नाम से लिखा है। यदि संख्यात्मक सरणी है, तो कहें, img (8-बिट या 16-बिट अहस्ताक्षरित पूर्णांकों की एक सरणी (एम, एन, 3)), आप इसका उपयोग कर सकते हैं:

from numpngw import write_png


write_png('output.png', img)

(यदि सरणी फ़्लोटिंग पॉइंट है, तो आपको मानों को अहस्ताक्षरित पूर्णांकों में बदलना होगा। पीएनजी फ़ाइल प्रारूप फ़्लोटिंग पॉइंट मानों को संग्रहीत नहीं करता है।)

0
Warren Weckesser 9 जुलाई 2021, 15:38