OpenCV windows版本和IOS、android 版本坑爹之处!!!
来源:互联网 发布:d3.js 电子书 编辑:程序博客网 时间:2024/06/01 21:23
目前做IOS、Android上的软件,需要将Windows下的算法移植到各个平台下,在移植的过程中,发现Opencv这个破开源软件的坑爹之处真多!!!
发现一个,就在下面列一个,不断更新吧:
-----------------------IOS 版本------------------------
1、cvGet2D
cvGet2D返回的是一个cvscalar类型的变量,在Windows下,像素值是按RGB存储的,即pixel.val[0]=R,pixel.val[1]=G,pixel.val[2]=B。而在IOS下,这货是TMD反的!!即pixel.val[0]=B,pixel.val[1]=G,pixel.val[2]=R!!导致我在移植的时候花了半天的时间,抱着试试看的心态给发现了,NND,开源的东西就是不靠谱!!!
///更正一下
不是上面的问题,ios下是UIimage对象,同事从网上找的代码将UIimage转换成IplImage对象,其中调用了cv_rgba2rgb,导致上面的问题。将其改为 cv_rgba2bgr,生成的iplimage对象就和windows和android版本一致了。坑爹的网上源代码,冤枉Opencv了,sorry
3、cvCopyImage
这破b函数在windows下没问题,到了IOS就傻b,死机还是啥来着,忘了。改成cvcopy就可以了。
4、pow函数
和Opencv没关系,也放在这说吧。记不太清了,如果变量是double等浮点型的话,pow的倍数也得设置成浮点型,比如pow(a,2.0)。(a是整型,2还是2.0来着,忘了)。在windows下,pow(a,2)就没问题。
这个错误很好解决,ios下编译会报错,把2改成2.0就好了。当然,要是不知道什么原因,郁闷死你!
--------------------Android版本-------------------------------------
android结合C++代码的麻烦程度就不多说了,反正不是我来折腾。但代码就得是我了:(
1、图像通道问题
据同事说,android下就那么几个格式的Bitmap对象,通过跟踪代码发现,android传递给C++的对象都是4通道的图像,如果不处理第4通道的话,就会黑屏!所以,在对图像处理的时候,不能像opencv似地不管第4通道,必须对第4通道赋值:直接将源图第4通道值对应拷贝过去就行。
2、cvCvtColor
Opencv做为开源软件恶心之处又一体现!cvCvtColor在windows下随便,各种颜色格式随便转换都行。但到了Android下,就会程序崩溃!!只有RGB2Gray,RGB2RGBA那么有限几个才不会崩溃。要想在Android下使用,就得自己重新实现cvCvtColor这个函数,或者调用Opencv在java版本下的cvtColor函数。。。。。
- OpenCV windows版本和IOS、android 版本坑爹之处!!!
- ios 学习之 debug和release版本
- js获取Android和iOS的版本
- Windows版本和检测
- Android之版本检测和更新
- android开发之模拟器genymotion(包含mac、windows和linux版本)
- Windows下配置Python版本OpenCV
- windows下安装python版本的opencv
- Android之版本更新
- Android 之版本更新
- Emacs之Windows版本配置
- Android Windows版本操作系统入门
- Android 2.1 SDK Windows版本
- android-sdk-windows版本下载
- Android版本和VERSION_CODE
- Windows Phone开发之获取屏幕分辨率 和 系统版本
- ios开发之《版本控制》
- opencv中c版本和c++版本区别体验
- Javascript 自定义函数判断网站访问类型
- ARM初学者指南
- http://blog.csdn.net/chinahuyong/article/details/17380247
- web端,微软图形chart控件的打印
- 很实用的自定义EditText——实现银行卡四位加空格
- OpenCV windows版本和IOS、android 版本坑爹之处!!!
- 《黑客免杀攻防学习笔记》——PE文件结构2
- 用alias命令设置永久别名
- WPF 带CheckBox、图标的TreeView
- 基于C#弹幕类射击游戏的实现——(二)渲染
- maven向本地仓库导入jar包命令
- 虚拟键盘按键的ASCII值
- Squid故障与解决方法汇总
- Mybatis启动报Result Maps collection already contains value for ...的问题