opencv Mat類型的轉換問題?
01-06
原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中文,字元切分時如何保證切出整個漢字,例如知這個字?