在ARM(Beagleboard)上使用YUYV替代JPEG压缩的OpenCV?

2 投票
1 回答
3203 浏览
提问于 2025-04-16 08:24

我在Beagleboard xM上运行OpenCV,使用的是Ubuntu系统和一个网络摄像头。这个摄像头工作得不错,但只能在YUYV模式下运行。也就是说,使用jpeg压缩的luvcview会出现很多画面被截断、颜色不对等问题。但如果用命令luvcview -f YuYV,效果就很好。

我想知道有没有办法在OpenCV中关闭jpeg压缩?

我尝试过用选项--without-jpeg来编译和安装OpenCV,但这个过程需要4个小时,而且通常在完成90%以上的时候就崩溃了。

有没有办法为ARM架构交叉编译一个不带jpeg的OpenCV版本,或者用已经编译好的安装包来关闭jpeg?

在安装时出现的错误:

[ 95%] 正在构建CXX对象 tests/cv/CMakeFiles/opencv_test.dir/src/amoments.o 链接CXX可执行文件 ../../bin/opencv_test CMakeFiles/opencv_test.dir/src/highguitest.o: 在函数 `CV_HighGuiTest::run(int)' 中:

...等等

../../lib/libopencv_features2d.so.2.2.0: 未定义的引用 cv::SIFT;:SIFT(double, bool bool, int, int, int, int)) ...等等

collect2: ld 返回了 1 个退出状态 make[2]: * [bin/opencv_test] 错误 1 make[1]: * [tests/cv/CMakeFiles/opencv_test.dir/all] 错误 2 make: * [all] 错误 2 (返回到bash)

1 个回答

2

我也遇到了同样的问题。这个链接可能对你有帮助:http://tech.groups.yahoo.com/group/OpenCV/message/77273

你可以在modules/features2d/src/sift.cpp文件中启用SIFT功能。可以在这个文件里搜索#ifdef arm。然后把sift.cpp文件中第51到53行的代码注释掉,比如://#define ARM_NO_SIFT

另外,如果你在使用beagle设备,你需要在运行cmake时加上-DWITH_JPEG=OFF这个选项。

撰写回答