android - OpenCV-Android highgui链接错误

标签 android opencv

我在 Android 上使用 opencv,并且已经成功地从手机的 SD 卡加载和处理 jpg 图像。现在我想操作存储在 SD 卡上的视频中的帧。我已经用 C++ 编写并测试了 opencv 代码,但是在尝试将其放入我的 android-opencv 项目时出现链接错误。具体来说,当我添加代码行时

CvCapture* capture = cvCreateFileCapture( "/sdcard/testVideo.MOV" );

然后尝试重建项目,我得到以下输出/错误:

OPENCV_CONFIG = ../../build/android-opencv.mk
PROJECT_PATH defaulting to this directory
/Users/me/Documents/Android/android-ndk-r4-crystax/ndk-build OPENCV_CONFIG=../../build/android-opencv.mk PROJECT_PATH=. V=0 
Compile++ thumb: Assay <= /Users/me/Documents/Android/opencv/android/apps/MyApp/jni/Processor.cpp
SharedLibrary  : libAssay.so
/Users/me/Documents/Android/opencv/android/build/obj/local/armeabi-v7a/libhighgui.a(cap.o): In function `cvCreateVideoWriter':
cap.cpp:(.text.cvCreateVideoWriter+0x16): undefined reference to `cvCreateVideoWriter_Images(char const*)'
cap.cpp:(.text.cvCreateVideoWriter+0x20): undefined reference to `cvCreateVideoWriter_Images(char const*)'
/Users/me/Documents/Android/opencv/android/build/obj/local/armeabi-v7a/libhighgui.a(cap.o): In function `cvCreateFileCapture':
cap.cpp:(.text.cvCreateFileCapture+0x2): undefined reference to `cvCreateFileCapture_Images(char const*)'
collect2: ld returned 1 exit status
make[1]: *** [/Users/me/Documents/Android/opencv/android/apps/MyApp/obj/local/armeabi/libAssay.so] Error 1
make: *** [libs/armeabi-v7a/libAssay.so] Error 2

它似乎在链接到 cvCreateFileCapture 时遇到问题。我读过指定 opencv 库的顺序很重要,但我不确定我应该使用什么顺序(或者如果这是我的问题)。我的 opencv 库按以下顺序指定:

OPENCV_LIBS := $(OPENCV_LIB_DIRS) -lfeatures2d  -lcalib3d -limgproc -lobjdetect  \
     -lvideo  -lhighgui -lml -llegacy -lcore -lopencv_lapack -lflann \
    -lzlib -lpng -ljpeg -ljasper 

有人知道如何让 cvCreateFileCapture 工作吗?

谢谢!

最佳答案

要解决此问题,假设您正在使用主干,您可以使用 svn up 来修复链接器问题: https://code.ros.org/trac/opencv/changeset/4756

然而,这现在只支持从一系列图像中捕获:

// capture video from a sequence of images
// the filename when opening can either be a printf pattern such as
// video%04d.png or the first frame of the sequence i.e. video0001.png

要真正支持视频读/写,我们需要添加 ffmpeg 或其他视频库支持。我见过 ffmpeg 端口四处 float ,但没有时间或需要将它们添加到 opencv for android。让我知道这是否有值(value),或者您是否已经完成并提交补丁。请务必通过 opencv trac 站点执行此操作。

https://code.ros.org/trac/opencv/wiki

关于android - OpenCV-Android highgui链接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5054526/

相关文章:

python - 使用Python从视频中识别车牌

java - 如何将纬度和经度拆分为单独的字符串?

android - 添加 values-21 文件夹后尝试构建项目并显示错误

java - 在 Android 的 SharedPreferences 中将对象存储为 JSON 字符串是否是一种不好的做法?

android - 适用于 Android 的离线导航软件 - 那里有什么?

python - 安装 mediapipe 库后 cv2 不工作

android - 如何在 Android 的 ContentResolver.query() 中防止 gmail 联系人?

c++ - 使用鼠标手动提取对象

opencv - 复杂背景的段性特征

python - 在 Python、OpenCV 中使用切片从图像中提取区域