python使用opencv resize圖像不進(jìn)行插值的操作
如下所示:
def resize(src, dsize, dst=None, fx=None, fy=None, interpolation=None):
如果使用vanilla resize,不改變默認(rèn)參數(shù),就會(huì)對原圖像進(jìn)行插值操作。不關(guān)你是擴(kuò)大還是縮小圖片,都會(huì)通過插值產(chǎn)生新的像素值。
對于語義分割,target的處理,如果是對他進(jìn)行resize操作的話。就希望不產(chǎn)生新的像素值,因?yàn)樗念伾畔ⅲ砹讼袼氐念悇e信息。
但是我們有時(shí)候希望resize之后不產(chǎn)生新的像素值,而是產(chǎn)生利用最近鄰點(diǎn)的像素值作為新產(chǎn)生的像素值。要實(shí)現(xiàn)這個(gè)操作只需要將interpolation=cv2.INTER_NEAREST,這個(gè)參數(shù)的默認(rèn)值是雙線性插值,幾乎必然會(huì)產(chǎn)生新的像素值。
補(bǔ)充知識(shí):python+OpenCV最近鄰域插值法 雙線性插值法原理
1.最近鄰域插值法
假設(shè)原圖像大小為1022,縮放到510,可以用原圖像上的點(diǎn)來表示目標(biāo)圖像上的每一個(gè)點(diǎn)。
例如目標(biāo)圖像上的點(diǎn)(1,2)可以用原圖像的點(diǎn)(2,4)來表示。
dst x 1 -> dst x 2 newXnewX = x*(src 行/目標(biāo) 行) newX = 1*(10/5) = 2newY = y*(src列/目標(biāo) 列) newY = 2*(20/10) = 4
12.3取12,當(dāng)為小數(shù)時(shí)則取離整數(shù)最近的數(shù)
2.雙線性插值法

A1(15.2,22)A2(15.2,23)B1(15,22.3)B2(16,22.3)
A1 = 20%上面的點(diǎn) + 80%下面的點(diǎn)A2
B1 = 30%左邊的點(diǎn) + 70%右面的點(diǎn)B2
中間的點(diǎn) = A130% + A270%
中間的點(diǎn) = B120% + B280%
以上這篇python使用opencv resize圖像不進(jìn)行插值的操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. 用Spring JMS使異步消息變得簡單2. 一文帶你徹底理解Java序列化和反序列化3. PHP驗(yàn)證碼工具-Securimage4. js實(shí)現(xiàn)碰撞檢測5. 關(guān)于IDEA 2020.3 多窗口視圖丟失的問題6. JS實(shí)現(xiàn)前端動(dòng)態(tài)分頁碼代碼實(shí)例7. javascript實(shí)現(xiàn)貪吃蛇小練習(xí)8. Python 下載Bing壁紙的示例9. Python 制作查詢商品歷史價(jià)格的小工具10. ASP.NET MVC使用jQuery ui的progressbar實(shí)現(xiàn)進(jìn)度條

網(wǎng)公網(wǎng)安備