我遇到了這個代碼:的OpenCV的ConvertTo()
image.convertTo(temp_image,CV_16SC3);
我看到的ConvertTo()函數的說明從here,但什麼混淆我是image
。我們如何閱讀上面的代碼? image
和temp_image
之間的關係是什麼?
謝謝。
我遇到了這個代碼:的OpenCV的ConvertTo()
image.convertTo(temp_image,CV_16SC3);
我看到的ConvertTo()函數的說明從here,但什麼混淆我是image
。我們如何閱讀上面的代碼? image
和temp_image
之間的關係是什麼?
謝謝。
第一個是源,第二個 - 目的地。所以,它需要鏡像,將其轉換爲類型CV_16SC3並存儲在temp_image中。
圖像是像素信息的矩陣(即,1080p
圖像將是1,920 × 1,080
矩陣,其中每個條目包含該像素的rbg
值)。您所做的只是將該矩陣(每個像素條目,迭代地)重新格式化爲一個新類型(CV_16SC3
),以便它可以被不同的程序讀取。
temp_image
是基於image
格式化爲CV_16SC3
的新像素信息矩陣。
這裏的其他答案是正確的,但缺乏一些細節。讓我嘗試。
image.convertTo(temp_image,CV_16SC3);
你有源圖像0和目的地圖像0。未指定的image
類型,但大概是CV_8UC3
或CV_32FC3
,即,3通道圖像(因爲convertTo
不改變信道的數量),其中,每個信道具有深度爲8位(unsigned char
,CV_ 8U C3 )或32位(float
,CV_ 32F C3)。
這行代碼會改變每個通道的深度,因此temp_image
的每個通道的深度爲16位(short
)。特別是它是signed short
,因爲類型說明符有S:CV_16 S C3。
請注意,如果您正在縮小的深度,如從float
到signed short
的話,那麼saturate_cast
將確保在temp_image
所有值將在正確的範圍內,即[-32768,32767]爲signed short
。
爲什麼你需要改變圖像的深度?
imread
閱讀,或想與imwrite
存儲16位深度的圖像。這通常用於醫療或圖形應用(AFAIK),以允許更廣泛的顏色。但是,大多數顯示器不支持16位圖像可視化。
@Miki,啊是的,我的壞,更新 – asdf