OpenCV中文网站

 找回密码
 立即注册
搜索
热搜: 安装 配置
查看: 9444|回复: 6

OpenCv一些函数(cvRound,cvThreshold等)在ARM下运行出错

[复制链接]
发表于 2009-4-22 19:23:46 | 显示全部楼层 |阅读模式
开发板为utu-S3C2440,使用arm-linux-gcc 2.95.3编译opencv-1.0.0成功,在开发板中也可运行基本的opencv函数(cvSave,cvLoad等);

但是接下来发现很多在PC(ubuntu8.10)上运行正常的代码,交叉编译后通过NFS在arm下运行,虽不报错但得不到正确的结果:

比如,使用cvThreshold处理灰度图像得到的图片像素全为0或是全为255。计算灰度直方图时,cvCalcHist( &frame, hist, 0, 0 ),通过cvGetReal1D(hist->bins,i)得到的值全为0等等。
以及前面帖子提到的cvRound,cvFloor等函数也得不到正确结果, (据说是由于浮点运算算法导致的,不知前面提到的这些函数是否也是因为这个原因而失效的?)

小弟最近刚开始接触嵌入式linux编程以及opencv到arm上的移植,最终目的是想在arm上实现camshift算法作图像识别跟踪,但遇到了很多问题。不知上面说的这些函数有没有在arm上运行成功的先例,修改的思路是怎样的?

因为问题很多,所以问的比较笼统,总感觉arm上程序运行方式和在PC上是不同的,但又不知不同在哪里(交叉编译器的原因还是运行平台本身的原因,如对浮点运算没有很好的支持?),如何做出相应的修改,恳请各位达人指点迷津,给出一个让我努力的方向即可!!
回复

使用道具 举报

发表于 2009-4-23 09:15:42 | 显示全部楼层

OpenCv一些函数(cvRound,cvThreshold等)在ARM下运行出错

重写cvRound,前面有人提过这个问题
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-4-26 14:21:05 | 显示全部楼层

OpenCv一些函数(cvRound,cvThreshold等)在ARM下运行出错

重写cvRound,前面有人提过这个问题
谢谢你的解答! 我把原来的
CV_INLINE  int  cvRound( double value )
注释掉,改成:
  1. inline int cvRound(double value)
  2. {
  3.         if(value>=0)
  4.                 return (int)(value+0.5);
  5.         else
  6.                 return (int)(value-0.5);
  7. }
复制代码
程序倒是都可以运行了,但是担心这样改会对运行效率有比较大的影响...
不知哪位有没有更高效的改法?
回复 支持 反对

使用道具 举报

发表于 2009-4-27 13:23:52 | 显示全部楼层

OpenCv一些函数(cvRound,cvThreshold等)在ARM下运行出错

[quote="Shiqi Yu":6v6i2v9i]重写cvRound,前面有人提过这个问题
谢谢你的解答! 我把原来的
CV_INLINE  int  cvRound( double value )
注释掉,改成:
  1. inline int cvRound(double value)
  2. {
  3.         if(value>=0)
  4.                 return (int)(value+0.5);
  5.         else
  6.                 return (int)(value-0.5);
  7. }
复制代码
程序倒是都可以运行了,但是担心这样改会对运行效率有比较大的影响...
不知哪位有没有更高效的改法?[/quote:6v6i2v9i]

这种函数比较常见, 你先查你所在平台的库, 如果有就可以替换了.
不过效率好的函数, 移植性可能不太好.
回复 支持 反对

使用道具 举报

发表于 2009-8-18 17:21:28 | 显示全部楼层

OpenCv一些函数(cvRound,cvThreshold等)在ARM下运行出错

将double类型的高低字交换一下就行了
还要注意低版本的交叉编译器默认char为无符号的
回复 支持 反对

使用道具 举报

发表于 2010-8-30 19:35:28 | 显示全部楼层

OpenCv一些函数(cvRound,cvThreshold等)在ARM下运行出错

你好,我现在正在做opencv在arm上的移植出现了问题提示:OpenCV Error: Unspecified error (The function is not implemented. Rebuild the l0
terminate called after throwing an instance of \'cv::Exception\'                  
Aborted                           
你能帮我分析一下那个地方出了问题,谢谢,另外能不能把你移植的参考资料或者笔记给我发一份,我将万分感激我邮箱:lanying1708@163.com
回复 支持 反对

使用道具 举报

发表于 2011-10-14 19:05:54 | 显示全部楼层

OpenCv一些函数(cvRound,cvThreshold等)在ARM下运行出错

你好,我现在正在做opencv在arm上的移植出现了问题提示:OpenCV Error: Unspecified error (The function is not implemented. Rebuild the l0
terminate called after throwing an instance of \'cv::Exception\'                  
Aborted                           
你能帮我分析一下那个地方出了问题,谢谢,另外能不能把你移植的参考资料或者笔记给我发一份,我将万分感激我邮箱:lanying1708@163.com

我遇到了跟你同样的问题,你的解决了吗?说下方法
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|OpenCV中文网站

GMT+8, 2024-5-4 11:20 , Processed in 0.009829 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表