[英]OpenCV convertTo()
我遇到了這個代碼:
image.convertTo(temp_image,CV_16SC3);
我從這里看到了 convertTo() 函數的描述,但讓我感到困惑的是image
。 我們如何閱讀上面的代碼? image
和temp_image
之間的關系是什么?
謝謝。
這里的其他答案是正確的,但缺少一些細節。 讓我試試。
image.convertTo(temp_image,CV_16SC3);
您有一個源圖像image
和一個目標圖像temp_image
。 您沒有指定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
閱讀,或者想要使用 16 位深度的imwrite
圖像存儲。 這通常用於 (AFAIK) 醫學或圖形應用程序以允許更廣泛的顏色。 但是,大多數顯示器不支持 16 位圖像可視化。圖像是像素信息矩陣(即1080p
圖像將是1,920 × 1,080
矩陣,其中每個條目包含該像素的rbg
值)。 您所做的就是將該矩陣(每個像素條目,迭代地)重新格式化為新類型( CV_16SC3
),以便不同的程序可以讀取它。
temp_image
是一個新的像素信息矩陣,基於格式化為CV_16SC3
的image
。
第一個是源,第二個是目的地。 因此,它獲取圖像,將其轉換為 CV_16SC3 類型並存儲在 temp_image 中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.