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;
详细的原因是: 操作取了暂时变量的地址,返回后暂时变量已经“消失”了。你不能再使用。
好的,问题就算攻克了。代码最终移植过来了!
c++opencv项目移植到Android(Mat—》IplImage*)的更多相关文章
- J2ME项目移植到Android平台六大注意事项
很多J2ME项目如何移植到Android平台呢?Java虽然号称是跨平台应用但是目前的移植问题还是比较严重的,不知道未来Sun推出JavaFx或F3时会出现什么问题,如何从J2ME移植到Android ...
- Cocos2d-x项目编译为Android应用——命令行方式
配置: 相关工具:Cocos2d-x 3.2 + Ant 1.9.4 + Android NDK r9d + Android SDK 运行平台:OS X 10.9.4+ Xcode 6 前言:笔者使用 ...
- Cocos2dx-3.0版本 从开发环境搭建(Win32)到项目移植Android平台过程详解
作为重量级的跨平台开发的游戏引擎,Cocos2d-x在现今的手游开发领域占有重要地位.那么问题来了,作为Cocos2dx的学习者,它的可移植特性我们就需要掌握,要不然总觉得少一门技能.然而这个时候各种 ...
- opencv学习笔记(一)IplImage, CvMat, Mat 的关系
opencv学习笔记(一)IplImage, CvMat, Mat 的关系 opencv中常见的与图像操作有关的数据容器有Mat,cvMat和IplImage,这三种类型都可以代表和显示图像,但是,M ...
- opencv之深拷贝及浅拷贝,IplImage装换为Mat
一.(1) 浅拷贝: Mat B; B = image // 第一种方式 Mat C(image); // 第二种方式 这两种方式称为浅copy,是由于它们有不同的矩阵头,但是它们共享内存空间,即 ...
- OpenCV——Mat,IplImage,CvMat类型转换
Mat,cvMat和IplImage这三种类型都可以代表和显示图像,三者区别如下 Mat类型侧重于计算,数学性较高,openCV对Mat类型的计算也进行了优化. 而CvMat和IplImage类型更侧 ...
- opencv 数据类型转换:CvArr, Mat, CvMat, IplImage, BYTE 转
留着以后查询: http://blog.csdn.net/augusdi/article/details/8863820 一.Mat类型:矩阵类型,Matrix. 在openCV中,Mat是一个多维的 ...
- 【React Native开发】React Native移植原生Android项目(4)
),React Native技术交流4群(458982758),请不要反复加群!欢迎各位大牛,React Native技术爱好者加入交流!同一时候博客左側欢迎微信扫描关注订阅号,移动技术干货,精彩文章 ...
- 【计算机视觉】【图像处理】【VS开发】【Qt开发】opencv之深拷贝及浅拷贝,IplImage装换为Mat
原文:opencv之深拷贝及浅拷贝,IplImage装换为Mat 一.(1) 浅拷贝: Mat B; B = image // 第一种方式 Mat C(image); // 第二种方式 这两种方式称 ...
随机推荐
- Codeforces #439 Div2 E
#439 Div2 E 题意 给出二维平面,有多个询问: 把某一区域围起来(围墙之间无交点) 移除某一区域的围墙(此时保证围墙一定存在) 选定两个位置问是否可以互相到达 分析 看起来很复杂,其实这道题 ...
- hdu6121
hdu6121 题意 给出一棵树,\(0\) 为根节点,节点 \(i\) 的父节点标号是 \(\lfloor\frac{i-1}{k}\rfloor\),求所有子树大小的异或和. 分析 找规律.在纸上 ...
- Combination Sum IV -- LeetCode
Given an integer array with all positive numbers and no duplicates, find the number of possible comb ...
- Postman Json测试接口
当传递Json数据时: 1.必须添加http头:content-type:application/json,否则会报错(后台取不到相对应的值) 注意:如果服务端只支持UTF-8,但程序未对提交数据进行 ...
- C语言实现括号配对问题
代码如下: #include<stdio.h> #include<string.h> #include<stdlib.h> // 写一个判断的括号是否匹配的函数 i ...
- Linux下CURL设置请求超时时间
使用CURL时,有两个超时时间:一个是连接超时时间,另一个是数据传输的最大允许时间. 连接超时时间用--connect-timeout参数来指定,数据传输的最大允许时间用-m参数来指定. 例如: cu ...
- IOS开发使用委托delegate在不同窗口之间传递数据
IOS开发使用委托delegate在不同窗口之间传递数据是本文要介绍的内容,主要是来讲解如何使用委托delegate在不同窗口之间传递数据,具体内容来看详细内容.在IOS开发里两个UIView窗口之间 ...
- 重设Windows 7密码 z
Restart the computer to boot using the CD. Once the GUI loads, press SHIFT+F10 to bring up the comma ...
- devexpress 经验笔记
1.去除 GridView 头上的 "Drag a column header here to group by that column" --> 点击 Run Desig ...
- 一些常用JS 函数总结
搜索url参数 /** * 搜索url参数 * @param {String} name 参数键名 * @return {String} 对应值 */ function getQueryVariabl ...