python使⽤opencvresize图像不进⾏插值的操作
如下所⽰:
def resize(src, dsize, dst=None, fx=None, fy=None, interpolation=None):
如果使⽤vanilla resize,不改变默认参数,就会对原图像进⾏插值操作。不关你是扩⼤还是缩⼩图⽚,都会通过插值产⽣新的像素值。
对于语义分割,target的处理,如果是对他进⾏resize操作的话。就希望不产⽣新的像素值,因为他的颜⾊信息,代表了像素的类别信息。
但是我们有时候希望resize之后不产⽣新的像素值,⽽是产⽣利⽤最近邻点的像素值作为新产⽣的像素值。要实现这个操作只需要将interpolation=cv2.INTER_NEAREST,这个参数的默认值是双线性插值,⼏乎必然会产⽣新的像素值。
补充知识:python+OpenCV最近邻域插值法双线性插值法原理
1.最近邻域插值法
假设原图像⼤⼩为1022,缩放到510,可以⽤原图像上的点来表⽰⽬标图像上的每⼀个点。
例如⽬标图像上的点(1,2)可以⽤原图像的点(2,4)来表⽰。
dst x 1 -> dst x 2 newX
newX = x*(src ⾏/⽬标⾏) newX = 1*(10/5) = 2
newY = y*(src列/⽬标列) newY = 2*(20/10) = 4
12.3取12,当为⼩数时则取离整数最近的数
2.双线性插值法
A1(15.2,22)
A2(15.2,23)
B1(15,22.3)
B2(16,22.3)
A1 = 20%上⾯的点 + 80%下⾯的点A2
resize函数c++B1 = 30%左边的点 + 70%右⾯的点B2
中间的点 = A130% + A270%
中间的点 = B120% + B280%
以上这篇python使⽤opencv resize图像不进⾏插值的操作就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论