2010-03-11 3 views
30

में रॉ छवि प्रसंस्करण रॉ छवियों को पढ़ने और प्रसंस्करण करने के लिए कोई पाइथोनिक समाधान हैं। भले ही यह केवल कच्ची फोटो फ़ाइल (उदाहरण के लिए cr2 या dng) तक पहुंच रहा हो और फिर इसे जेपीईजी के रूप में आउटपुट कर रहा हो।पाइथन

आदर्श रूप से पाइथन के लिए एक ड्रेक बाइंडिंग, लेकिन कुछ भी जो पूरा कर सकता है वह भी पर्याप्त होगा।

उत्तर

0

मुझे यकीन नहीं है कि पाइथन इमेजिंग लाइब्रेरी (पीआईएल http://www.pythonware.com/products/pil/) में रॉ समर्थन कितना व्यापक है, लेकिन आप इसे देखना चाह सकते हैं।

अन्यथा, आप सीधे डक्रॉ को कॉल कर सकते हैं क्योंकि यह पहले से ही इस समस्या को हल करता है।

+0

पीआईएल रॉ नहीं करता है (कम से कम, सीआर 2 या डीसीआर नहीं)। – Seth

5

ImageMagickmost RAW formats का समर्थन करता है और Python bindings प्रदान करता है।

पायथन के लिए डक्रॉ बाइंडिंग के लिए: डीसीआरओ सी में लिखा गया है, ताकि आप इसे ctypes module के माध्यम से एक्सेस कर सकें।

4

मैंने पाइथन में कच्ची छवियों को संसाधित करने के लिए हाल ही में एक शुद्ध-पायथन पुस्तकालय लिखा है जिसे rawphoto कहा जाता है। वर्तमान में यह केवल कैनन सीआर 2 फाइलों का समर्थन करता है (मैं आशा करता हूं कि जल्द ही निकोन प्रारूपों को जोड़ देगा)। यह PyPi पर भी है। यदि आप सीआर 2 फाइलों तक पहुंच रहे हैं तो यह आपके लिए उपयोगी हो सकता है। जेपीईजी पूर्वावलोकन छवि निकालने की

उदाहरण:

from rawphoto.raw import Raw 

# The API here will probably change before the 1.0 release. 
blob = Raw(filename="somefile.CR2").fhandle.get_quarter_size_rgb() 

# Do something with the JPEG here... eg. save it: 
with open("output.jpeg", 'wb' as f: 
    f.write(blob) 

संपादित:

from rawphoto.cr2 import Cr2 

blob = Cr2(filename="somefile.CR2").get_quarter_size_rgb() 

# Do something with the JPEG here... eg. save it: 
with open("output.jpeg", 'wb' as f: 
    f.write(blob) 

या, सामान्य Raw वर्ग का उपयोग कर के रूप में मैं और अधिक जोड़ने के जो कच्चे फ़ाइल के किसी भी प्रकार लपेटो जाएगा: इसे rawkit, ctypes आधारित libraw bindings द्वारा प्रतिस्थापित किया गया है। RawKit बहुत बेहतर काम करेगा और इसके बजाय आपको इसका उपयोग करना चाहिए (कच्चेफोटो को अब बहिष्कृत किया जा रहा है और केवल एक शैक्षिक उपकरण के रूप में उपयोग किया जा रहा है)।

+0

यह कोड मेरे लिए काम नहीं करता है। मैंने पैकेज स्थापित किया लेकिन त्रुटि प्राप्त करें: विशेषता त्रुटि: 'Cr2' ऑब्जेक्ट में कोई विशेषता नहीं है 'get_quarter_size_rgb' – Jonny

+0

जब मैंने यह उत्तर लिखा था तो एपीआई के सभी बदल गए हैं। सीआर 2 कक्षा में कोड की जांच करें (या अधिक सामान्य, 'रॉ' कक्षा) देखें। –

+0

शायद आप उत्तर को फिर से अपडेट कर सकते हैं? – Jonny

10

कुछ समय पहले मैंने rawpy नामक एक libraw/dcraw wrapper लिखा था। यह काफी उपयोग करने के लिए आसान है:

import rawpy 
import imageio 

raw = rawpy.imread('image.nef') 
rgb = raw.postprocess() 
imageio.imsave('default.tiff', rgb) 

यह NumPy सरणी के साथ मूल रूप से काम करता है और असंसाधित बायर डेटा के लिए सीधी पहुँच सहित विकल्पों में से एक बहुत, का समर्थन करता है।

2

यहाँ rawkit के साथ एक दोस्ताना प्रारूप करने के लिए एक कैनन CR2 छवि परिवर्तित करने के लिए एक तरह से, कि अपनी वर्तमान कार्यान्वयन के साथ काम करता है:

import numpy as np 

from PIL import Image 
from rawkit.raw import Raw 

filename = '/path/to/your/image.cr2' 
raw_image = Raw(filename) 
buffered_image = np.array(raw_image.to_buffer()) 
image = Image.frombytes('RGB', (raw_image.metadata.width, raw_image.metadata.height), buffered_image) 
image.save('/path/to/your/new/image.png', format='png') 

एक numpy सरणी का उपयोग करना है नहीं बहुत सुंदर यहाँ लेकिन कम से कम यह काम करता है, मैं यह समझने के लिए पीआईएल रचनाकारों का उपयोग कैसे नहीं कर सका।

+0

आप फ़ाइल में जेपीजी प्रारूप सहेज रहे हैं पीएनजी विस्तार के साथ। –

+0

धन्यवाद, टाइपो को ठीक किया गया। –