2013-04-13 47 views
2

我用imshow函數寫了一些簡單的程序。它很好地工作了幾次。我試過在處理之前和之後查看兩張照片。這是第一次,它運行良好,但第二次它崩潰了我的應用程序。從opencv的Imshow不工作了

現在每次imshow崩潰應用程序。

如何解決這個問題?

#include <iostream> 
#include <iostream> 
#include <opencv2/imgproc/imgproc.hpp> 
#include <opencv2/core/core.hpp> 
#include <opencv2/highgui/highgui.hpp> 

using namespace std; 
using namespace cv; 

int main() 
{ 
    Mat image, gray_image; 
    string file_path; 

    cout << "Input file path: "; 
    cin >> file_path; 

    image = imread(file_path, CV_LOAD_IMAGE_UNCHANGED); 
    if (image.data==NULL) 
     { 
      cout << "No image found!"; 
      return 1; 
     } 

    cvtColor(image, gray_image, CV_BGR2GRAY); 

    namedWindow("Orig", CV_WINDOW_AUTOSIZE); 
    namedWindow("Gray", CV_WINDOW_AUTOSIZE); 

    imshow("Orig", image); 
    imshow("Gray", gray_image); 

    cout << "Output file path: "; 
    cin >> file_path; 

    imwrite(file_path, gray_image); 

    return 0; 
} 
+0

你或許應該向我們展示一些代碼,究竟你改變。 –

+2

堆棧跟蹤也很有用。 –

+0

我沒有改變任何東西,只是第二次運行相同的程序。 – Mitu

回答

9
+0

我知道,但有和沒有waitKey imshow窗口顯示,正確的大小,但充滿灰色。可以在控制檯中輸入輸出文件的路徑,程序返回0,但是如果嘗試與imshow窗口交互,它會崩潰。 – Mitu

+0

@mitu imshow()填充灰色意味着它沒有被數據更新 - 直到waitkey()調用纔會繪製圖像 –