背景描述
轮胎磨耗算法是用python写的,其中调用了外部显卡及cpu显卡,对应cuda编程及opencl编程。但是整个测试系统软件是找人做的,用c开发的,为了保持系统的统一性,由我来把python转成c++,转换期间遇到了不少问题,也都一一解决了,最后结果一致,生成了dll。
遇到的问题及解决办法
1、python的numpy库转到c++
用python写各种矩阵算法那是简单的很,但是转到c++就不好弄了,没有numpy里面的各种函数,如果每个都自己写那就麻烦的很,从网上找了一个叫numcpp的c++库,号称是c++里的numpy,里面有一些自带的函数与numpy的确相似,不过这个库只支持到二维矩阵,只好用了部分函数(reshape、tile、arange函数等),同时opencv里面也有一些矩阵操作函数,也用了一部分(pad函数等),向量操作为了方便用了c自带的vector、list等。
其中numcpp的索引如果用中括号[],那么索引是所有矩阵从前向后的,比如有一个两行两列的矩阵a,那么a[0]、a[1]、a[2]、a[3]是对矩阵a的四个元素的依次索引,如果对定向的行列索引,要用小括号,a(1,0)即是对第2行第1列的元素进行索引。
numcpp里面的元素必须是基本的c/c++数据类型,比如int、float等,定义为nc::NdArray,不能是vector、list等扩展类型,这个就比较坑了,而vector里面是可以放vector甚至是opencv的mat数据的,这个就非常好用。
感谢《C++用vector生成三维数组,并计算行、列、高》作者https://blog.youkuaiyun.com/sinich__eveen/article/details/86561698
附numcpp地址:
地址

最低0.47元/天 解锁文章
3372

被折叠的 条评论
为什么被折叠?



