opencv Mat類型的轉換問題?

原Mat類型是CV_8UC1的,用Mat.convertTo(Mat,CV_64FC1)轉換一下type,為什麼原圖像是這樣的

但是轉換完了卻變成了這樣的

求解釋


OpenCV: convertTo returns white image (sometimes)

少用知乎問技術問題,多用google,多上stackoverflow

知乎是交流情感人生的大型網站


首先同樓上所說,這類問題不大適合在知乎上問。

看[文檔](http://docs.opencv.org/search.html?q=convertTo)就會發現OpenCV的convertTo函數如果第三個參數使用默認的話,就會導致數值只是類型的改變,但在浮點數表示的顏色空間中,數值範圍是0-1.0。顯然按你這樣調用的話,基本上所有像素都轉換成大於1的浮點數,截斷後當然也就是一片白色區域了。


樓上正解,改為convertTo(Mat,CV_64FC1,1/255.0)即可。


灰度或rgb圖像的顏色分量都在0~255之間。CV_8UC1的取值範圍正好,因此直接imshow就可以顯示圖像了。CV_64FC1取值範圍遠遠不止0~255,需要先歸一化成0~1.0,imshow的時候會把圖像x255後再顯示。


推薦閱讀:

在圖像處理中用Mat比IplImage 除了不用自己管理內存,Mat有其他的優勢沒?請熟悉OpenCV和圖像處理的大牛指點
opencv和pcl的區別?
OpenCV 與 OpenGL 的關係是什麼?
如何學習C++圖像處理?
ocr中文,字元切分時如何保證切出整個漢字,例如知這個字?

TAG:OpenCV | 計算機視覺 |