当前位置:   article > 正文

openpose内部输出_openpose如何获得内部网络的输出

openpose如何获得内部网络的输出
for(int i =0;i<4;i++)
{
   std::cout<<((spCaffeNetOutputBlob.get())->shape())[i]<<std::endl;
}
     
int shape2 = ((spCaffeNetOutputBlob.get())->shape())[2];
int shape3 = ((spCaffeNetOutputBlob.get())->shape())[3];
((spCaffeNetOutputBlob.get())->cpu_data());
const float* t = ((spCaffeNetOutputBlob.get())->cpu_data());
//std::cout<<sizeof(t)<<std::endl;
//std::cout<<((spCaffeNetOutputBlob.get())->count())<<std::endl;
ofstream file;
file.open("/home/zhoulu/data/txt/file.txt");
int lulu=0;
for(int kk=0;kk<(spCaffeNetOutputBlob.get())->count();kk++)
{
    //lulu = lulu+1;
    //std:cout<<lulu<<std::endl;
    //std::cout<<((spCaffeNetOutputBlob.get())->count())<<std::endl;
    //std:cout<<((spCaffeNetOutputBlob.get())->cpu_data())[kk]<<std::endl;
    file<<((spCaffeNetOutputBlob.get())->cpu_data())[kk]<<'\n';
 }
file.close();

spCaffeNetOutputBlob是由spCaffeNetOutputBlob = ((NetCaffe*)spNet.get())->getOutputBlob()获得的,作为

spResizeAndMergeCaffe->Forward_gpu({spCaffeNetOutputBlob.get()}, {spHeatMapsBlob.get()});
的输入参数,其中

boost::shared_ptr<caffe::Blob<float>> NetCaffe::getOutputBlob() const
NetCaffe::getOutputBlob()返回的是boost::shared_ptr指针,所以 spCaffeNetOutputBlob是这样的一个指针,为了获得普通的c指针,通过get()函数来获得

这样就会获得指向caffe::Blob<blob>的一个指针,然后调用blob的shape()函数,即可输出openpose网络输出的大小。调用count()就是BxCxHxW的大小

要输出所有map的值,因为他们是以一维数组存储的,所以需要遍历,但是以一维形式调用

std:cout<<((spCaffeNetOutputBlob.get())->cpu_data())[kk]<<std::endl;

用文件流写入文件中,方便查看

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/799998
推荐阅读
  

闽ICP备14008679号