2015-03-31 69 views
0

opencv imwrite在我的C++代碼中打印奇怪的黑色(ish)圖像。一個例子的代碼來讀取圖像,然後打印出來是以下:opencv打印奇怪的黑色圖像

#include "iostream" 
#include "opencv2/core/core.hpp" 
#include "opencv2/highgui/highgui.hpp" 
using namespace std; 

int main() 
{ 
    cv::Mat input_image = cv::imread("input_image.tiff",0); 
    cv::imwrite("output_image.tiff",input_image); 

    return 0; 
} 

予編譯爲g++ -std=c++11 main.cc -o bin `pkg-config --cflags --libs opencv`

的輸入圖像和輸出圖像被如下(應該是相同的):

輸入圖像Input Image輸出圖像Output image

圖像正在被正確讀取,因爲我通過訪問不同的像素值來檢查它。所以問題在於imwrite。

附加信息:代碼在一開始工作正常,但突然改變了它的行爲,重新安裝opencv和它的庫沒有幫助。

有人能告訴什麼是錯在這裏,

感謝

+0

首先確保您閱讀的輸入圖像是正確的。在窗口中顯示它。即namedWindow(「temp」,input_image); 也嘗試保存在其他格式,如BMP .. – ssh99 2015-03-31 05:48:47

+4

是完整的代碼?看起來有點像使用findContours(它修改輸入圖像!)。 – Micka 2015-03-31 05:49:23

+0

是的,這是完整的代碼。目標是看看imwrite是否工作。是的,就像我在所有情況下運行findContours一樣。 SUSE更新後開始發生,所以我不知道它是否是openCV更新中的錯誤 – Lalit 2015-03-31 18:00:45

回答

0

我猜,我發現了錯誤。 libtiff被打破,所以tiff圖像打印有趣,而其他格式打印罰款。重新安裝libtifftiff修復了錯誤。