विचित्र कस्टम हेडर के साथ .RAW फ़ाइल को कैसे खोलें


0

मेरे पास निम्न प्रारूप में एक विचित्र .raw फ़ाइल है, जिसे मुझे एक क्लास प्रोजेक्ट के लिए खोलने की आवश्यकता है। इसमें 487x414 फ़ोटो के उदाहरण का उपयोग करके निम्न संरचना है:

  • पंक्तियों की संख्या दो बिना हस्ताक्षरित बाइट्स (01E7) है
  • स्तंभों की संख्या दो संयुक्त राष्ट्र के हस्ताक्षरित बाइट्स (019E) है
  • प्रत्येक पिक्सेल का प्रतिनिधित्व करने वाले बिट्स की संख्या (यह हमेशा 8 होगी)
  • वास्तविक तस्वीर डेटा

परियोजना .raw फ़ाइल पर बढ़त का पता लगाने के लिए है, लेकिन प्रोफेसर ने कहा कि मुझे इसे किसी भी पुराने छवि संपादन सॉफ़्टवेयर के साथ खोलने में सक्षम होना चाहिए (जाहिरा तौर पर, वह उम्मीद करता है कि मुझे एक खिड़की से संकेत दिया जाए जहां मैंने बाइट्स की संख्या निर्धारित की है। हैडर), इसलिए मैंने निम्नलिखित प्रयास किया कि कोई फायदा न हो:

  • Paint.net
  • फ़ोटोशॉप तत्व
  • एडोब लाइटरूम
  • ImageMagick
  • तार से पुष्ट किया हुआ फ़ीता
  • DCRaw

मैं डुअल बूटिंग उबंटू और विंडोज हूं, इसलिए अगर किसी को इस पर कोई विचार है कि मैं इस फाइल को कैसे प्रदर्शित कर सकता हूं, (मैं वर्तमान में इसे ओपनसीवी में हिस्टोग्राम के रूप में लोड करने की कोशिश कर रहा हूं, लेकिन मैं अपना परिणाम जांचने के लिए कुछ करना चाहूंगा खिलाफ), यह बहुत सराहना की जाएगी।


Ufraw का प्रयास करें। मैं इसे अपने कैमरे (निकॉन) से कच्ची फ़ाइलों को संपादित करने के लिए उपयोग करता हूं और जहां तक ​​मुझे पता है कि इसमें अधिकांश अन्य प्रारूपों के लिए समर्थन है। एक कोशिश के काबिल होना चाहिए।
होलावे

मैंने कोशिश की थी कि, लेकिन दुर्भाग्य से यह काम नहीं किया। इस अनुत्तरित प्रश्न की याद दिलाने के लिए धन्यवाद।
सीनियनीज

जवाबों:


0

मैंने एक कस्टम पायथन स्क्रिप्ट लिखने के लिए समाप्त किया, जिसे आप यहां पा सकते हैं । यहाँ महत्वपूर्ण हिस्सा है।

#Load the raw file
f = open(filename,'rb') # switch to command line args later
#Because the byte order is weird
a = f.read(1)
b = f.read(1)
#First line is rows
rows = int((b+a).encode('hex'), 16)
a = f.read(1)
b = f.read(1)
#Second line is columns
cols = int((b+a).encode('hex'), 16)
#Last byte is encoding, but we're just going to ignore it
f.read(1)
#And everything else is 8 bit encoded, so let's load it into numpy and display it with matplotlib
bin_image = np.fromstring(f.read(), dtype=np.uint8)
#Change the shape of the array to the actual shape of the picture
bin_image.shape = (cols, rows)

fig = pylab.figure()
#Display the original image
fig.add_subplot(1,4,1)
pylab.imshow(bin_image, cmap=cm.gray)

यदि यह काम करता है, तो इस प्रश्न को अनुत्तरित से निकालने के लिए इसे चिह्नित करें।
होलोवे
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.