2012-03-26 19 views
6

के लिए कोई लेखक नहीं मिला, निम्न आदेश एक अपवाद का कारण बनता है।सीवी :: imwrite निर्दिष्ट एक्सटेंशन

cv::imwrite("test.jpg", diffImg); 

मैंने पूर्ण पथ और पीएनजी निर्यात सहित इस पर कई भिन्नताओं की भी कोशिश की।

Exception at 0x75abd36f, code: 0xe06d7363: C++ exception, flags=0x1 (execution cannot be continued) in opencv_core231!cv::error

C:\slave\WinInstallerMegaPack\src\opencv\modules\highgui\src\loadsave.cpp:276: error: (-2) could not find a writer for the specified extension

this related thread के अनुसार मेरे वर्तमान OpenCV स्थापना छवि प्रारूप मैंने कोशिश का समर्थन नहीं करता: यहाँ त्रुटि है। लेकिन मैंने अपनी साइट सुझाए गए precompiled Windows framework को डाउनलोड किया है।

मैं जेपीजी निर्यात कैसे काम कर सकता हूं?

+0

क्या आपने OpenCV-2.3.1-win-superpack.exe डाउनलोड किया था? आप किस विंडोज का उपयोग कर रहे हैं? 7 या 8? – karlphillip

+0

मैंने अपने विंडोज 7 कंप्यूटर पर v2.3.1 सुपरपैक डाउनलोड किया। मैंने सफलता के बिना एसवीएन संस्करण (जैसा टिप्पणियों में नीचे दिखाया गया है) की भी कोशिश की। – Pieter

उत्तर

6

यह लग रहा है जैसे कि आप एक आप संकलन कर रहे हैं तुलना में एक अलग निष्पादन वातावरण का उपयोग कर रहे थे। क्या आप निम्न कोशिश कर सकते हैं? निर्भरता वॉकर डाउनलोड करें और निष्पादन योग्य निर्देशिका पर जाएं और निर्भरता वॉकर (http://www.dependencywalker.com/) पर .exe फ़ाइल खींचें और छोड़ें। यह आपको दिखाएगा कि कौन सी रनटाइम लाइब्रेरी इसका उपयोग कर रहा है। अब, सुनिश्चित करें कि आप सही वातावरण के साथ प्रोग्राम को कॉल कर रहे हैं। यदि आप कर सकते हैं, प्रोग्राम को कॉल करने के लिए कमांड लाइन इंटरफ़ेस का उपयोग करें, तो यह आपको यह जानकर सुरक्षित महसूस करेगा कि कोड कहां से कॉल किया जा रहा है, ताकि आप सुनिश्चित हो सकें कि आपकी प्रतिलिपि बनाई गई है। डीएलएस कहा जा रहा है।

सधन्यवाद, डैनियल

+0

अच्छा यह दिलचस्प है। [Qt निर्माता निर्माण] (http://i.imgur.com/Nzf0b.png) * opencv_core231.dll * और [विजुअल स्टूडियो बिल्ड] के साथ लिंक (http://i.imgur.com/OAxmj.png) * opencv_core231d.dll * के साथ लिंक। ([डीएलएल के बारे में नोट।] (Http://stackoverflow.com/questions/9868963/cvimwrite-could-not-find-a-writer-for-the- निर्दिष्ट-extension#comment12725201_9961035)) नियमित रूप से क्या अंतर है और 'डी' डीएलएल और यह हमें इस मुद्दे के बारे में क्या बताता है? – Pieter

+0

'डी' वाला एक डीबग संस्करण है जो आपको अधिक डीबग जानकारी देता है। 'डी' के बिना दूसरा रिलीज संस्करण है जिसका अर्थ है कि यह आम तौर पर तेजी से चल सकता है और इसका आकार छोटा हो सकता है। आपको संकलक को बताने में सक्षम होना चाहिए जिसे प्रोग्राम को लिंक करने की आवश्यकता है। और जाहिर है, क्यूटी में आप संकलक संस्करण को लिंक करने के लिए कहते हैं जबकि वीएस में आप डीबग संस्करण से जुड़े हुए हैं। – james

+0

बिंगो, मैंने इसे समझ लिया ... जब मैं डीबग बिल्ड कर रहा हूं तो मुझे ओपनसीवी के डीबग डीएलएल से लिंक करने की ज़रूरत है या अन्यथा लिखने में असफलता असफल हो जाएगी। विजेता उत्तर के लिए धन्यवाद - बक्षीस तुम्हारा है! – Pieter

0

आप OpenCV पुनः संकलित करें और "jpeg" प्रारूप करने के लिए समर्थन जोड़ने के लिए की जरूरत है। नवीनतम opencv कोड प्राप्त करें और चलाने के cmake:

svn co http://code.opencv.org/svn/opencv/trunk/opencv myopencvdir.svn/ 
cd myopencvdir.svn/ 
mkdir release 
cd release/ 
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local .. 

और अगर libjpeg, libpng, libtiff का समर्थन कर रहे की जाँच करें। यदि नहीं, तो आपको उन्हें स्थापित करने और cmake को फिर से चलाने की आवश्यकता है।

cmake उत्पादन का उदाहरण है कि पता चलता मीडिया आई/ओ समर्थन:

-- Media I/O: 
--  ZLib:      TRUE 
--  JPEG:      TRUE 
--  PNG:      TRUE 
--  TIFF:      TRUE 
--  JPEG 2000:     TRUE 
--  OpenEXR:     YES 
+0

वे लिनक्स के लिए कमांड हैं। आप आसानी से cmi इंटरफ़ेस का उपयोग करके विंडोज़ पर समान कर सकते हैं। – Eric

+0

मैंने ओपनसीवी मैन्युअल रूप से संकलित करने के लिए आपके चरणों का पालन किया। संस्करण जो मैंने समाप्त किया था v2.3.3 था, जो विंडोज के लिए नवीनतम स्थिर निर्माण (v2.3.1) से अधिक हालिया है। अफसोस की बात है कि मेरे पास अभी भी एक ही समस्या है ... यहां मेरा * मीडिया I/O * अनुभाग है। यह * सत्य * के बजाय * निर्माण * कहा लेकिन मुझे लगा कि यह कोई समस्या नहीं होगी। http://pastebin.com/D2LkrWGR – Pieter

+0

ओह, और [यह] (http://i.imgur.com/nwq5T.png) भी मेरे साथ हो रहा है। कोड स्निपेट [यहां] (http://pastebin.com/9vAgPv93)। – Pieter

0

कुछ और की कोशिश कर रहा से पहले, सुनिश्चित करें कि आप OpenCV और this answer के अनुसार वी.एस. परियोजना की स्थापना कर रहे हैं, और ध्यान से OpenCV का मिश्रण न हो डीबग पुस्तकालयों के साथ पुस्तकालयों को छोड़ दें।

चीजों की एक जोड़ी आप की कोशिश कर सकते हैं:

  • आप विंडोज 7 64 बिट्स पर हैं, तो आप this या this निर्देशों का पालन कर सकते हैं।

  • मैं एक ऐसी ही question on javacv wiki देखा और यह एक और संभव समाधान है:

  1. Head over to this page , follow the instructions to setup opencv 2.3.1 till Step 2. (Use 32-bit mode)

  2. Download the latest version of TBB for Windows from here .

  3. Extract the TBB zip file and copy all .dll files inside/bin/ia32/vc10 and all .dll files in/bin/ia32/vc10/irml into your C:\ OpenCV 2.3.1\ build\ x86\ vc10\ bin

हमें बताएं कि आप किया करते हैं।

+0

यह मेरे लिए विजुअल स्टूडियो में काम करता है, लेकिन मैं एमएसवीसी -2010 कंपाइलर के साथ क्यूटी निर्माता आईडीई का उपयोग कर रहा हूं। यहां मेरे शामिल पथ और संबंधित लाइब्रेरी झंडे हैं: http://pastebin.com/jj7damtx मैंने सभी डीएलएल को * सी: \ opencv \ build \ x86 \ vc10 \ bin * में प्रोग्राम की निर्देशिका में कॉपी किया है जो मैं कोशिश कर रहा हूं बनाने के लिए। आलेख ने * ओपनसीवी * निर्देशिका को * ओपनसीवी 2.3.1 * का नाम बदलने के लिए कहा, लेकिन चूंकि वीएस -2010 इस चरण के बिना काम करता है, मुझे लगता है कि यह क्यूटी निर्माता के रास्ते में नहीं आया है। – Pieter

+0

बस इतना है कि आप जानते हैं कि मेरे कंप्यूटर पर सबकुछ कहाँ संग्रहीत किया गया है, यहां पर्यावरण चर के वातावरण चर हैं: OPENCV = C: \ opencv, PATH =% OPENCV% \ build \ x86 \ vc10 \ bin, LIB =% OPENCV% \ \ x86 \ vc10 \ lib, INCLUDE =% OPENCV% \ build \ include बनाएं। – Pieter

0

मैं एक ही रनटाइम त्रुटि में चलाने "opencv त्रुटि अनिर्दिष्ट (निर्दिष्ट किए गए एक्सटेंशन के लिए एक लेखक नहीं पा सके)"। मैंने पीटर के समान समाधान का उपयोग किया, जो प्रोजेक्ट सेटिंग में है -> लिंकर -> इनपुट -> अतिरिक्त निर्भरता, मैंने एमएसवीएस डीबग कॉफ़िगरेशन के लिए ओपनसीवी libs के डीबग संस्करण का उपयोग करने के लिए निर्दिष्ट किया है, और रिलीज का उपयोग करने के लिए निर्दिष्ट एमएसवीएस रिलीज कॉन्फ़िगरेशन के लिए ओपनसीवी libs का संस्करण। फिर रनटाइम त्रुटि चली गई है।

-3

बस प्रारूप है जिसमें आप छवि image.jpg की तरह अपनी छवि को बचाने के लिए, की तरह का उल्लेख है।jpeg

cv2.imwrite ('image.jpg', छवि)

+0

^^ कृपया 2012 से प्रश्नों का उत्तर देने के लिए * नहीं * कोशिश करें। जाहिर है, आपने 'हल' उत्तर नहीं पढ़ा। – berak

+0

यह उत्तर पायथन ओपनसीवी बाइंडिंग का भी उपयोग कर रहा है जब प्रश्न स्पष्ट रूप से सी ++ है।आपको प्रश्नों को ध्यान से पढ़कर पोस्ट किए जा रहे उत्तरों के बारे में अधिक जागरूक होने की आवश्यकता है। – rayryeng

0

हाँ, यह मेरे लिए काम करता है।
डिबग के लिए बस को दूर thoes *.lib left *d.lib (Property Pages/Linker/Input/Additional Dependencies), बस कॉपी इन *d.lib:

9

मैं भी इस मुद्दे का सामना करना पड़ा है और मैं देखा है कि इस मुद्दे को जब मैं किसी भी विस्तार के बिना छवि का उपयोग आ जाएगा। जैसे abc.jpg लेकिन मैं इसे केवल abc का नाम बदलता हूं।

+1

धन्यवाद निश्चित चीजें! – floatingice

0

उपर्युक्त कुछ समाधानों को छोड़कर, आपको अपनी तस्वीरों का नाम देखना चाहिए। मेरे लिए, मेरी समस्या का समाधान डीबग में कमांड पैरामीटर में गलत इनपुट है। मैं 1.png नाम की एक तस्वीर को आउटपुट करना चाहता था और यह मुख्य() में दूसरा पैरामीटर है, और मुख्य() का तीसरा पैरामीटर 0x3f जैसे हेक्साडेसिमल नंबर है और मैंने इन दो पैरामीटर को मिश्रित किया है जिसका अर्थ है कि मैं एक तस्वीर आउटपुट करना चाहता हूं नाम 0x3f। यही कारण है कि यह कहा जाता है "एक लेखक नहीं मिला"। the screenshot of the wrong part of my problem चीनी के बारे में खेद है, लेकिन संपत्ति -> संपत्ति कॉन्फ़िगर करें -> डीबग -> कमांड पैरामीटर्स। :)

संबंधित मुद्दे