博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c++opencv项目移植到Android(Mat—》IplImage*)
阅读量:6761 次
发布时间:2019-06-26

本文共 887 字,大约阅读时间需要 2 分钟。

近期将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;

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

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

转载地址:http://agfeo.baihongyu.com/

你可能感兴趣的文章
Relational Algebra 关系代数
查看>>
node的http请求
查看>>
蓝牙Profile的概念和常见种类(转)
查看>>
Kafka 配置
查看>>
Ddr2,ddr3,ddr4内存条的读写速率
查看>>
MySQL 索引与查询优化
查看>>
static final常量变量的正确书写规范
查看>>
vue项目关闭eslint检查
查看>>
微服务技术栈
查看>>
NPOI workbook.RemoveSheetAt(0); 删除sheet页 次序 sheettmpRequire.CopySheet("Require", true);...
查看>>
Go标准库:深入剖析Go template
查看>>
ant design pro (四)新增页面
查看>>
uni - 使用npm
查看>>
ASP.NET Core多语言 (转载)
查看>>
java中比较两个double类型值的大小
查看>>
golang ----gc问题
查看>>
WPF去除边框的方法
查看>>
浅析NTFS 文件系统数据流安全问题
查看>>
Smart Device Framework 2.2 发布了
查看>>
Humble Numbers soj1029
查看>>