2013-06-27 80 views
1

所以,我有一個數字掃描儀的圖像,它的分辨率是26萬像素。 我想將圖像的分辨率降低到5百萬像素。如何降低OpenCV中圖像的分辨率?

是否可以降低圖像的分辨率而不損壞內容?

如果是,如何在OpenCV實現中降低它?

任何幫助將不勝感激。 Thankyou

+0

意思是這個還是別的?請更具體一些。 (http://stackoverflow.com/questions/8339077/decrease-image-resolution-in-opencv) – ondrejdee

+0

你是什麼意思的「不破壞內容」? – Mikhail

+0

不,這不是我之前的意思,我已經用數字掃描儀掃描了圖像。沒有涉及相機。我只需要降低圖像的分辨率。 – anarchy99

回答

10

您可以使用cv2::resize()

resize(src, dst, Size(), factor, factor, interpolation); 

這裏,interpolation可以選擇爲cv::INTER_LANCZOS4獲得最佳插值結果。

factor是採樣率,並且爲了從26mp轉變爲5MP您可能需要它是2.28

總是下采樣引入了一些信息和細節的損失。

+0

謝謝你的回答,這是我一直在尋找的。 – anarchy99

+0

對於收縮,「係數」將<1,您可以改爲設置係數= 0,並提供所需的輸出尺寸作爲第三個參數。 INTER_LANCZOS4對收縮沒有任何影響。你會得到與INTER_AREA相同的結果,兩者都不是很好(相當多的別名)。這是OpenCV中的一個漏洞 - 對於單步收縮沒有太好的方法(立方體和lanczos濾波器不適合收縮)。你可以嘗試使用INTER_AREA縮小到2倍所需的大小,然後使用pyrDown來獲得最終結果。將有更少的別名,但可能有點模糊。 – greggo

0

降低圖像的分辨率是損壞內容的定義。無損圖像壓縮不會降低圖像的分辨率。這就是說5百萬像素仍然是一個非常高的分辨率,而且大多數應用程序都需要。例外情況可能是科學和醫療應用。我會確保您保留原始圖像,直到您知道可以使用結果並仔細選擇圖像壓縮方法以減少僞像。