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;

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

好的,问题就算解决了。代码终于移植过来了!

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-04 20:24:26

c++opencv项目移植到Android(Mat—》IplImage*)的相关文章

[图文]为移植到Android平台上的Cocos2d-x项目添加xml布局文件

转载请标明出处:http://blog.csdn.net/vistatns/article/details/51316462 (将Cocos2d-x项目移植到Android上请前往:http://blog.csdn.net/vistatns/article/details/51316103) 1.添加布局文件main.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:a

【React Native开发】React Native移植原生Android项目

转载请标明出处: http://blog.csdn.net/developer_jiangqq/article/details/50519677 本文出自:[江清清的博客] (一)前言 [好消息]个人网站已经上线运行,后面博客以及技术干货等精彩文章会同步更新,请大家关注收藏:http://www.lcode.org 前三节课程我们已经对于React Native For Android的环境搭建,IDE安装配置以及应用运行,调试相关的知识点做了讲解.今天我们来讲一个非常有用的知识点.移植我们已有

opencv之深拷贝及浅拷贝,IplImage装换为Mat

一.(1)  浅拷贝: Mat B; B = image  // 第一种方式 Mat C(image); // 第二种方式 这两种方式称为浅copy,是由于它们有不同的矩阵头,但是它们共享内存空间,即指向一个矩阵.当图像矩阵发生变化时,两者相关联,都会变化. (2)深拷贝 Mat B,C; B = image.clone();       // 第一种方式 image.copyTo(C); // 第二种方式 深拷贝是真正的copy了一个新的图像矩阵,此时image,B,C三者相互没有影响. 二.

opencv 数据类型转换:CvArr, Mat, CvMat, IplImage, BYTE 转

留着以后查询: http://blog.csdn.net/augusdi/article/details/8863820 一.Mat类型:矩阵类型,Matrix. 在openCV中,Mat是一个多维的密集数据数组.可以用来处理向量和矩阵.图像.直方图等等常见的多维数据. Mat有3个重要的方法: 1.Mat mat = imread(const String* filename); 读取图像 2.imshow(const string frameName, InputArray mat); 显示

OpenCV:Mat,IplImage,CvMat类型转换

Mat,cvMat和IplImage这三种类型都可以代表和显示图像,三者区别如下 Mat类型侧重于计算,数学性较高,openCV对Mat类型的计算也进行了优化. 而CvMat和IplImage类型更侧重于“图像”,opencv对其中的图像操作(缩放.单通道提取.图像阈值操作等)进行了优化.IplImage类型与CvMat类型的关系类似于面向对象中的继承关系.实际上,CvMat之上还有一个更抽象的基类----CvArr,这在源代码中会常见.在opencv2.0之前,opencv是完全用C实现的.

OpenCV学习笔记(四)—— OpenCV for Android移植到Android平台

如今,大部分的AR都是基于移动设备的,所以这里我们尝试在Android中调用OpenCV的功能来做一些相关的测试.由于OpenCV是基于C语言和部分C++语言开发的,而Android开发使用的则是Java,那么如何才能在Java中调用OpenCV库中的类或者代码呢?这就需要借助于JNI了,不过在使用JNI之前,我们首先要先配置好开发环境. 一.工具: 1.Eclipse:包含JDK.SDK.IDE.CDT.NDK和ADT插件,也就是在android软件开发环境配置完成之后再加上NDK和CDT插件

Cocos2dx-3.0版本 从开发环境搭建(Win32)到项目移植Android平台过程详解

作为重量级的跨平台开发的游戏引擎,Cocos2d-x在现今的手游开发领域占有重要地位.那么问题来了,作为Cocos2dx的学习者,它的可移植特性我们就需要掌握,要不然总觉得少一门技能.然而这个时候各种各样的问题也就来了,之前网上一直有零零碎碎的移植教程,但是都不完整,或是有这样或者那样的问题.今天刚刚研究成功了Cocos2dx-3.0版本项目的安卓平台移植问题,本人亲自完成了整个过程,将Cocos2dx-3.0版本 从开发环境搭建(Win32)到项目移植Android平台过程 一起分享给大家.

Opencv 笔记 opencv tutorial 2.1节 mat

前言:opencv中,mat类型非常基础和重要.以下是opencv tutorial 2.1章节的中英文整理. Mat 简介 IplImage c 结构 需要管理内存 mat是c++中的类class 自动内存分配 Mat  包括: header A pointer to the matrix containing the pixel values  (can take dimentionlity 根据存储方法) 头大小不变  矩阵大小变 复制数据的速度由矩阵大小决定 将图像传给函数是常见做法 图

Ecplise项目转移到Android Studio,以及Genymotion模拟器介绍

一.移植android项目 今天简单分享一个从ecplise开发项目转移到Android Studio的方法,之前一直在ecplise上开发android项目,但是因为google现在主打Android Studio,所以我也只好跟随潮流啦.所以转移项目资源还是必须的. 1.首先还是得有android Studio,这个在我之前的博客里面就有,这里就不复述了. 2.在eclipse项目中导出gradle项目. (1)具体路径在File->Export->Generate Gradle buil