小编Jul*_* S.的帖子

OpenCV重映射插值错误?

我正在使用opencv重映射功能将图像映射到另一个坐标系.但是,我的初步测试表明插值存在一些问题.在这里,我举一个简单的例子,一个图像的恒定0.1像素移位,到处都是0但位置[50,50].

import cv2
import numpy as np

prvs = np.zeros((100,80), dtype=np.float32)
prvs[50:51, 50:51] = 1.

grid_x, grid_y = np.meshgrid(np.arange(prvs.shape[1]), np.arange(prvs.shape[0]))
grid_y = grid_y.astype(np.float32)
grid_x = grid_x.astype(np.float32) + 0.1

prvs_remapped = cv2.remap(prvs, grid_x, grid_y, interpolation=cv2.INTER_LINEAR)

print(prvs_remapped[50,50])
print(prvs_remapped[50,49])
Run Code Online (Sandbox Code Playgroud)

0.90625
0.09375
Run Code Online (Sandbox Code Playgroud)

但是,考虑到线性插值方法,我期望0.9和0.1.我做错了什么还是这个数字问题?有没有更精确的重映射算法?

谢谢.

python interpolation opencv remap spatial-interpolation

5
推荐指数
1
解决办法
968
查看次数

使用可选依赖的装饰器

假设我有以下代码:

try:
    import bar
except ImportError:
    bar = None

@bar.SomeProvidedDecorator
def foo():
    pass
Run Code Online (Sandbox Code Playgroud)

其中bar是一个可选的依赖项。如果 bar 未导入,则上面的代码将失败。有没有推荐的方法来处理这个问题?

我想出了:

try:
    import bar
except ImportError:
    bar = None

def foo():
    pass

if bar is not None:
    foo = bar.SomeProvidedDecorator(foo)
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有更好的方法来处理这个问题(即有没有办法保留装饰器语法)?

python python-import python-decorators

5
推荐指数
1
解决办法
78
查看次数