• c++opencv项目移植到Android(Mat—》IplImage*)


    近期将PC机上的行人检測的C++项目移植到Android平台遇到非常多的问题。因此,记录一些重点。
    1. 最好能够參照Opencv sample 里面的mix-processing。
    2. 数据结构的问题:尤其是 将从java得到的Mat数据转化为IplImage*。

    这个会有非常多的问题。网上大概的方法是:

      //第一种转换方式  error
        IplImage *imgIpl1 = cvCreateImage(cvSize(w, h), 8, 3);  
        Mat temp = preMat.clone();  
        imgIpl1->imageData = (char *)temp.data;  
    
        //另外一种转换方式  
        IplImage imgIpl2 = preMat.operator _IplImage();  
    
        //第三种转换方式  
        IplImage imgIpl3 = (IplImage)(preMat); 
        //第四种转换方式 
        IplImage *imgIpl4 = &IplImage(preMat);
        //第五种转换方式 
        Mat imgtemp;
        imgtemp =mGr.clone();
        imgshow=cvCreateImage(cvSize(mGr.cols,mGr.rows),8,3);
        imgshow.imageData=(char*)imgtemp.data;

    可是,对我来说都不好用,我也不知道为什么。

    于是继续探索,出现了这个问题: taking address of temporary [-fpermissive]
    最终找到了解决方式:

    Mat& mGr  = *(Mat*)addrGray;
    IplImage temp = (IplImage)mGr;
    IplImage *imgshow =&temp;

    详细的原因是: 操作取了暂时变量的地址,返回后暂时变量已经“消失”了。你不能再使用。

    好的,问题就算攻克了。代码最终移植过来了!

  • 相关阅读:
    BZOJ2039: [2009国家集训队]employ人员雇佣
    BZOJ2542: [Ctsc2001]终极情报网
    BZOJ2140: 稳定婚姻
    BZOJ3280: 小R的烦恼
    BZOJ3258: 秘密任务
    BZOJ2400: Spoj 839 Optimal Marks
    BZOJ3171: [Tjoi2013]循环格
    BZOJ1758: [Wc2010]重建计划
    BZOJ3175: [Tjoi2013]攻击装置
    机房破解程序
  • 原文地址:https://www.cnblogs.com/claireyuancy/p/7244418.html
Copyright © 2020-2023  润新知