我從類型CV_8UC4的kinect v2中獲得了圖像。 現在我嘗試在類型CV_8UC1中使用以下代碼。CV_8UC4 convertTo CV_8UC1不起作用
cv::Mat mImg(iHeight, iWidth, CV_8UC4);
cv::Mat mImg2(iHeight, iWidth, CV_8UC1);
....
get image from kinect to mImg
....
mImg.convertTo(mImg2, CV_8UC1);
之後,mImg2類型仍然是24(CV_8UC4),不知道我是否正確使用此功能。請幫忙。
要小心你想做什麼,如果你使用CV_BGR2GRAY它會假設8UC3輸入,而不是8UC4。 CV_BGRA2GRAY會將4個通道轉換爲一個通道。但是:你想達到什麼目的? BGR2GRAY將計算所有通道的線性組合,如0.33 * r + 0.33 * g + 0.33 * b(實際上,綠色和紅色的權重會高於藍色通道!)。不確定Alpha通道到底會有多精確。 – Micka
其實現在CV_8UC1類型的圖像是灰色的。我會做進一步的測試來取代CV_BGR2GRAY。我只想說cvtColor是這個問題的正確選擇,而不是convertTo。 –
確實取決於你想達到什麼,但正如你發現的,convertTo不能用來改變通道的數量。 – Micka