OpenCV中文网站

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

ARM开发板上抓取AVI视频帧的错误

[复制链接]
发表于 2010-3-14 20:25:14 | 显示全部楼层 |阅读模式
我已经参考论坛的方法编译成功,操作系统RHEL4.8,编译器arm-linux-gcc 2.95.3,
编译选项
#./configure --host=arm-linux --prefix=/root/OpenCV/target/arm --without-gtk --without-carbon --without-quicktime --without-1394libs --without-ffmpeg --without-python --without-swig --disable-apps
#make
#make install
在arm文件中生成了库文件,头文件等,将arm文件夹拷贝到与开发板的共享目录/gx中。
启动开发板,
#mount -t nfs -o nolock 192.168.1.15:/gx /mnt/nfs
#export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/gx/arm/lib
应用程序如下:
#include "cv.h"
#include "highgui.h"
#include <stdio.h>
#include <ctype.h>

int main(int argc,char **argv)
{
CvCapture *capture=cvCaptureFromAVI(argv[1]);
IplImage *img=0;
if(!cvGrabFrame(capture)){
printf(&quot;Could not grab a frame.\n&quot;);
exit(1);
}
img=cvRetrieveFrame(capture);
if(!cvSaveImage(&quot;test.bmp&quot;,img)){
printf(&quot;Could not save image.\n&quot;);
exit(3);
}
exit(0);
}
程序写的不规范,就是为了做一个测试,将读取到得视频捕获一帧,并保存为bmp图像。
#arm-linux-gcc -o test test.c -I/gx/arm/include/opencv -I/gx/arm/lib -lcv -lcvaux -lcxcore -lhighgui -lml
然后将生成的可执行文件在开发板上执行,总是提示
#Could not grab a frame.
以为是视频格式的问题,原来采用的是书中自带的video.short.xvid.avi,又用WINAVI软件将其转换为24位RGB真彩格式的视频,可是还是提示不能抓帧
急啊,都搞好几天了,望赐教!!!
回复

使用道具 举报

发表于 2010-3-15 21:09:23 | 显示全部楼层

ARM开发板上抓取AVI视频帧的错误

楼主用的是opencv1.0.0吗?我用的是opencv1.1pre1 ,用的交叉编译器是3.4.1的,安装倒是成功了,但是运行samples/c里的例子的时候,出现一大堆undefined reference阿,我也不知道啥原因~~我的PKG_CONFIG_PATH变量都设置的没有问题,举个例子,我单独的编译lkdemo.c的时候出现如下问题:
[root@localhost c]# arm-linux-g++ lkdemo.c -static -o lkdemo `pkg-config --cflags --libs opencv`
/usr/local/lib/opencv/lib/libcv.a(cvcolor.o)(.text+0x5334): In function `$a\':
: undefined reference to `cvCbrt\'
/usr/local/lib/opencv/lib/libcv.a(cvcolor.o)(.text+0x5350): In function `$a\':
: undefined reference to `cvCbrt\'
/usr/local/lib/opencv/lib/libcv.a(cvcolor.o)(.text+0x536c): In function `$a\':
: undefined reference to `cvCbrt\'
/usr/local/lib/opencv/lib/libcv.a(cvcolor.o)(.text+0x57b8): In function `$a\':
: undefined reference to `cvCbrt\'
/usr/local/lib/opencv/lib/libcv.a(cvfeatureselect.o)(.text+0x3ac): In function `$a\':
: undefined reference to `cvMinMaxLoc\'
/usr/local/lib/opencv/lib/libcv.a(cvcornersubpix.o)(.text+0x7b0): In function `cvFindCornerSubPix\':
: undefined reference to `cvInvert\'
/usr/local/lib/opencv/lib/libcv.a(cvlkpyramid.o)(.text+0x99c): In function `cvCalcOpticalFlowPyrLK\':
: undefined reference to `cvGetNumThreads\'
/usr/local/lib/opencv/lib/libcv.a(cvlkpyramid.o)(.text+0xe58): In function `cvCalcOpticalFlowPyrLK\':
: undefined reference to `cvGetThreadNum\'
/usr/local/lib/opencv/lib/libcv.a(cvlkpyramid.o)(.text+0x2714): In function `$a\':
: undefined reference to `cvInvert\'
/usr/local/lib/opencv/lib/libcv.a(cvlkpyramid.o)(.text+0x3420): In function `icvGetRTMatrix(CvPoint2D32f const*, CvPoint2D32f const*, int, CvMat*, int)\':
下面还有很多这种错误,哪位大侠能告诉我为什么阿?
谢谢~~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-3-16 14:18:00 | 显示全部楼层

ARM开发板上抓取AVI视频帧的错误

我的是opencv-1.0,兄弟你的错误应该是链接库的时候出现了问题,你可以试试不用`pkg-config --cfilags --libs opencv`,直接用我上面说到的命令分别链接试试,看看还有没有问题,如果还有再说吧
回复 支持 反对

使用道具 举报

发表于 2010-3-16 15:22:35 | 显示全部楼层

ARM开发板上抓取AVI视频帧的错误

我的是opencv-1.0,兄弟你的错误应该是链接库的时候出现了问题,你可以试试不用`pkg-config --cfilags --libs opencv`,直接用我上面说到的命令分别链接试试,看看还有没有问题,如果还有再说吧
我除了直接用`pkg-config --cfilags --libs opencv`试过之外,也分别试过,分成两步走:
第一步:arm-linux-gcc -I <path>/include/opencv -o lkdemo.o -c lkdemo.c
生成目标代码完全成功没有错误
第二步:arm-linux-gcc -static -o lkdemo -L <path>/lib lkdemo.o  -lcxcore -lcv -lhighgui -lcvaux -lml
就有一堆undefined reference信息出现了,确实是在目标文件链接库的时候出现问题了。
我刚刚回头看了一下我的confiure配置参数,可能是因为没有支持gtk和V4L2的原因吧,现在正在重新编译安装,看看支持GTK和V4L2之后还会是怎样的~~
回复 支持 反对

使用道具 举报

发表于 2010-4-20 21:08:38 | 显示全部楼层

ARM开发板上抓取AVI视频帧的错误

版主,成功了么?

我想那两张图片,一张背景一张当前帧做个背景差,你说在arm上能做么?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-6-23 19:24:41 | 显示全部楼层

ARM开发板上抓取AVI视频帧的错误

问题已经解决了,其实主要还是ffmpeg库的问题,因为OpenCV在ARM上移植过程中用了选项--without-ffmpeg,所以OpenCV不会识别任何视频文件。
所以就涉及到ffmpeg在ARM上的移植,而ffmpeg的移植又是依赖于xvid与x264,所以还是先移植xvid与x264到ARM平台,并将两者生成的头文件与库文件放置于交叉编译链内,再移植ffmpeg,同样生成的头文件与库文件放置于交叉编译链内,最后在交叉编译OpenCV时,改变配置选项为--with-ffmpeg,这样的话,将最终生成的opencv的库文件以及前三者生成的库文件放置于开发板与主机的共享目录中,并设置开发板的链接库路径为共享目录中的库文件夹。
经试验证明,最终开发板可以识别opencv教材中自带的raw,xvid及mpeg视频文件,抓取帧当然不成问题了。
回复 支持 反对

使用道具 举报

发表于 2012-6-7 13:33:19 | 显示全部楼层

ARM开发板上抓取AVI视频帧的错误

我也是这样做的。先移植xvid,x264,再移植ffmpeg支持xvid和x264。再移植OpenCV支持了ffmpeg。完了之后将这些经过交叉编译的库都拷贝到ARM开发板上。交叉编译一个实例程序,放到ARM上运行,无法读取raw,xvid和mpeg视频。

不知道哪里出问题了,请高手指教。
回复 支持 反对

使用道具 举报

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

本版积分规则

手机版|OpenCV中文网站

GMT+8, 2024-5-7 01:52 , Processed in 0.010812 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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