2015-07-10 5 views
6

मैं इस सरल OpenCV कार्यक्रम चलाने के लिए कोशिश कर रहा हूँ, लेकिन मैं यह त्रुटि आई:OpenCV त्रुटि: अभिकथन में विफल रहा है (size.width> 0 && size.height> 0) सरल कोड

OpenCV Error: Assertion failed (size.width>0 && size.height>0) in imshow, file .../opencv/modules/highgui/src/window.cpp, line 276 

कोड:

#include <iostream> 
#include <opencv2/opencv.hpp> 

using namespace std; 

int main() 
{ 
    cout << "Hello World!" << endl; 

    cv::Mat inputImage = cv::imread("/home/beniz1.jpg"); 
    cv::imshow("Display Image", inputImage); 

    return 0; 
} 

इस त्रुटि का कारण क्या है?

+0

यकीन है कि पथ सही – Miki

+0

भी एक' waitKey() जोड़ने के लिए हो सकता है। – Miki

+0

मुझे यकीन है, मैंने वहां छवि कॉपी की है – user3191398

उत्तर

9

इस त्रुटि का अर्थ है कि आप एक खाली छवि दिखाने की कोशिश कर रहे हैं। ;:

  1. अपनी छवि के पथ गलत है (imread("C:\\path\\to\\image.png"), या imread("C:/path/to/image.png") विंडोज भागने दो बार निर्देशिका सीमांकक में, उदाहरण के लिए imread("C:\path\to\image.png") होना चाहिए:) आप imshow के साथ छवि लोड करते हैं, यह आम तौर पर के कारण होता है
  2. छवि एक्सटेंशन गलत है। (उदाहरण के लिए ".jpg" ".jpeg" से अलग है);
  3. आपके पास फ़ोल्डर तक पहुंचने का अधिकार नहीं है।

एक सरल समाधान का अन्य समस्याओं को छोड़ने के लिए अपनी परियोजना dir में छवि डाल करने के लिए, और बस imread के लिए फ़ाइल नाम (imread("image.png")) पास है।

, waitKey(); जोड़ने का ध्यान रखें अन्यथा आप कुछ भी नहीं देख सकेंगे।

आप देख सकते हैं एक छवि सही ढंग से लोड किया गया है की तरह है:

#include <opencv2\opencv.hpp> 
#include <iostream> 
using namespace cv; 

int main() 
{ 
    Mat3b img = imread("path_to_image"); 

    if (!img.data) 
    { 
     std::cout << "Image not loaded"; 
     return -1; 
    } 

    imshow("img", img); 
    waitKey(); 
    return 0; 
} 
+0

ऐसा लग रहा है ओपी लिनक्स या संभवतः साइगविन का उपयोग कर रहा है। – drescherjm

+0

@drescherjm हां, यह इस समस्या को हल करने के बारे में सिर्फ एक सामान्य जानकारी है (इस विशेष विषय पर बहुत सारे प्रश्न हैं)। मैं सबसे संभावित (और केवल Windows के लिए उदाहरण), लिनक्स – Miki

0

आमतौर पर यह मतलब है कि आपकी छवि वहाँ नहीं है, उसकी जांच करने के लिए एक बुनियादी दावा है कि अगर सामग्री से पहले वास्तव में प्रदर्शित विंडो में प्रदर्शन योग्य है यह, और जिस तरह से आपको छवि नामित करने के लिए विंडो बनाने की आवश्यकता है विन्डो ("नाम") तो imshow ("name", image);

+0

आप '' namedWindow' imshow' से पहले कॉल करने के लिए की जरूरत नहीं है पर लोगों को जोड़ने के लिए स्वतंत्र महसूस जोड़ा – Miki

1

मैं केवल Raspbian में ठीक उसी समस्या थी,। कोशिश करने के कुछ घंटों के बाद, समाधान बहुत आसान था, मुझे फ़ाइल एक्सटेंशन छोड़ना पड़ा। अंत में `, या आप कुछ भी नहीं देख सकेंगे;

#include <opencv2/opencv.hpp> 
#include <iostream> 

using namespace std; 
using namespace cv; 
int main() 
{ 
    Mat inputImage = imread("beniz1"); 
    imshow("Display Image", inputImage); 
    waitKey(5000); 

    return 0; 
} 
संबंधित मुद्दे