一、图片数据的预处理。
简单来说就是用opencv自带的函数cv::dnn::blobFromImage,得到blob,然后处理一下得到的blob数据。最后将数据保存起来或者传递给Atlas。

1.用opencv实现Atlas官方实现的Python图片预处理。
一开始按照Python脚本里面的步骤逐一用opencv实现,但是实现到最后一个transpose时,opencv没有相应的操作函数。于是再次查找资料,发现了opencv自带一个类似的处理函数cv::dnn::blobFromImage,用于将图片数据转换成NCHW顺序的四维矩阵。
https://www.zhihu.com/question/400627328
https://www.cnblogs.com/sysuzyq/p/6824926.html
Qt+OpenCV+Atlas的使用

用该函数后得到一个四维矩阵。
Qt+OpenCV+Atlas的使用

访问该矩阵的方法如下
https://blog.csdn.net/fenglan8764/article/details/100744239

至此,还有一个问题需要解决。caffe使用的blob的类型是float16类型,是一个非标准类型;而opencv这边得到的blob是float32的,不一样,所以需要用cv::float16_t转换一下。
Qt+OpenCV+Atlas的使用

最后得到一个和Atlas官方一样长度的数组。
301056 = 1x3x224x224x2,其中最后一个2是指float16所占的字节数。
Qt+OpenCV+Atlas的使用
通过将opencv得出的数据与Atals官方得出的数据进行简单比较,发现不完全一样,但是数据较为接近。

相关文章:

  • 2021-09-07
  • 2021-05-08
  • 2021-05-03
  • 2022-12-23
  • 2021-04-28
  • 2021-12-04
  • 2021-06-22
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-12-19
  • 2022-12-23
  • 2021-06-11
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案