image-processing - 计算表面法线贴图时发生了一些奇怪的事情
问题描述
我正在使用以下代码从深度图像生成表面法线贴图:
for x in range(depth.shape[0]):
for y in range(depth.shape[1]):
try:
dzdx=(depth[x+1,y,0]-depth[x-1,y,0])/2
dzdy=(depth[x,y+1,0]-depth[x,y+1,0])/2
except:
dzdx=0
dzdy=0
sub=np.asarray([-dzdx,-dzdy,1])
normals[x,y,:]=sub/np.linalg.norm(sub)
关于发生了什么的任何想法?
解决方案
您在该行中有一个错误:
dzdy=(depth[x,y+1,0]-depth[x,y+1,0])/2
它应该是
dzdy=(depth[x,y+1,0]-depth[x,y-1,0])/2
推荐阅读
- python - 正则表达式直到字符,但如果前面没有另一个字符
- docker - Docker 文件所有者和组
- neural-network - 每层的权重和预测
- html - BeautifulSoup 在 Python 中仅解析一列而不是整个维基百科表
- php - Laravel Voyager 向 BREAD 控制器添加其他方法
- sql - 格式化日期而不将数据类型更改为 varchar
- angular - 延迟加载组件到 Angular 辅助出口
- javascript - 将输入更改为大写而不使光标跳到文本末尾
- python - 有没有办法将三个数据帧收集到一个数据帧中?
- excel - 你怎么做这个Else if?