使用opencv resize方法替代PIL resize方法的一个小发现

项目场景:

最近在做一个纸页表格电子化处理的项目,需要在c++项目中调用darknet训练的识别模型。调用的方式采用了opencv的dnn模块,调用后,同样需要把phton代码转成c++来实现。

问题描述:

在复现代码的过程中,存在这样的问题: 对于图片的resize,python中使用了PIL.Image中的resize((new_w,new_h), Image.BICUBIC),而Image.BICUBIC的插值方式可以使图像中边缘的变化更明显,对于边缘的检测效果才会达到要求。在尝试用opencv中resize+CV_INTER_CUBIC发现,效果差距很大,无法替代PIL中的方法。

原因分析:

具体原因就不分析了,反正就是两个包中用的插值方法是不同的。

解决方案:

遇到了这个问题后,高手们肯定是直接去看pillow的源码,然后把源码中的功能实现出来就好了。 但作为一名老菜鸡,扣源码是不可能的(不会扣,也扣不动.....),于是本着进行最后挣扎的想法,对opencv中其他的插值方法依次进行了尝试, 最后发现CV_INTER_AREA和PIL中Image.BICUBIC的效果是最为接近的, 不用问我为什么,老菜鸡怎么可能知道这个。但是用CV_INTER_AREA替代后,至少可以基本实现这个目标。在此记录一下,希望可以帮助同样有此烦恼的兄弟们~
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值