2013-01-04 41 views
1

我無法使用函數imwrite將Mat寫入圖像文件。當我試圖將其寫入BMP格式時它工作正常,但在嘗試寫入其他格式時,它會給我一個未處理的異常。無法將Mat寫入JPG或OpenCV/C++的BMP以外的任何其他圖像格式

 merge(yuv_channels,3,resImg); 
     imshow("Result",resImg); 
     imwrite("C:\\result.jpg",resImg); 

上面的代碼是我的嘗試保存爲jpg。

 merge(yuv_channels,3,resImg); 
     imshow("Result",resImg); 
     imwrite("C:\\result.bmp",resImg); 

它工作正常,當我改變擴展到bmp雖然。

任何幫助將不勝感激。 謝謝。

+0

您確定您擁有[C:\\]的寫入權限。在Windows Vista和更高版本中,默認情況下您沒有。是的,它很爛。 –

+0

是的,我有寫入權限[C:\]。就像我之前說過的,我能夠成功地將它寫入bmp,但不能使用其他圖像格式。 – user1926691

回答

1

resImg的內容格式可能不正確。對於PNG,JPEG 2000和TIFF,只有16位無符號(CV_16U)。如果格式,深度或頻道順序不同,請在保存前使用Mat :: convertTo()和cvtColor()進行轉換。請參閱http://docs.opencv.org/modules/highgui/doc/reading_and_writing_images_and_video.html?highlight=imwrite#imwrite

+0

好的謝謝。你會碰巧有一個關於如何使用convertTo()的示例代碼?或者更確切地說,我應該爲rtype參數使用什麼? C++:void Mat :: convertTo(OutputArray m,int rtype,double alpha = 1,double beta = 0) – user1926691

+0

我從來沒有用過converTo自己。抱歉 – evpo

相關問題