ошибка в необходимости при использовании библиотек openCV - PullRequest
0 голосов
/ 15 января 2012

Я программирую в QT для устройства Android и должен использовать openCV для захвата с камеры. Я уже использовал Qt creator и связал openCV и использовал камеру, но в Qt для android (needitas) при сборке программы выведите следующие ошибки:

C:/OpenCV2.3.1/libs/armeabi-v7a/libopencv_highgui.a(cap_images.o): In function `CvCapture_Images::close()':
    cap_images.cpp:(.text._ZN16CvCapture_Images5closeEv+0x1c): undefined reference to `cvReleaseImage'
    C:/OpenCV2.3.1/libs/armeabi-v7a/libopencv_highgui.a(cap_images.o): In function `CvCapture_Images::grabFrame()':
    cap_images.cpp:(.text._ZN16CvCapture_Images9grabFrameEv+0x1e): undefined reference to `cvReleaseImage'
    C:/OpenCV2.3.1/libs/armeabi-v7a/libopencv_highgui.a(cap_ffmpeg.o): In function `CvCapture_FFMPEG_proxy::retrieveFrame(int)':
    cap_ffmpeg.cpp:(.text._ZN22CvCapture_FFMPEG_proxy13retrieveFrameEi[CvCapture_FFMPEG_proxy::retrieveFrame(int)]+0x50): undefined reference to `cvInitImageHeader'
    cap_ffmpeg.cpp:(.text._ZN22CvCapture_FFMPEG_proxy13retrieveFrameEi[CvCapture_FFMPEG_proxy::retrieveFrame(int)]+0x5a): undefined reference to `cvSetData'
    C:/OpenCV2.3.1/libs/armeabi-v7a/libopencv_highgui.a(cap_ffmpeg.o): In function `CvVideoWriter_FFMPEG_proxy::writeFrame(_IplImage const*)':
    cap_ffmpeg.cpp:(.text._ZN26CvVideoWriter_FFMPEG_proxy10writeFrameEPK9_IplImage[CvVideoWriter_FFMPEG_proxy::writeFrame(_IplImage const*)]+0x5e): undefined reference to `cv::Exception::Exception(int, std::string const&, std::string const&, std::string const&, int)'
    cap_ffmpeg.cpp:(.text._ZN26CvVideoWriter_FFMPEG_proxy10writeFrameEPK9_IplImage[CvVideoWriter_FFMPEG_proxy::writeFrame(_IplImage const*)]+0x64): undefined reference to `cv::error(cv::Exception const&)'
    cap_ffmpeg.cpp:(.text._ZN26CvVideoWriter_FFMPEG_proxy10writeFrameEPK9_IplImage[CvVideoWriter_FFMPEG_proxy::writeFrame(_IplImage const*)]+0x6a): undefined reference to `cv::Exception::~Exception()'
    cap_ffmpeg.cpp:(.text._ZN26CvVideoWriter_FFMPEG_proxy10writeFrameEPK9_IplImage[CvVideoWriter_FFMPEG_proxy::writeFrame(_IplImage const*)]+0x11c): undefined reference to `cv::Exception::~Exception()'
C:/OpenCV2.3.1/libs/armeabi-v7a/libopencv_highgui.a(grfmt_tiff.o): In function `cv::TiffEncoder::newEncoder() const':
grfmt_tiff.cpp:(.text._ZNK2cv11TiffEncoder10newEncoderEv+0x16): undefined reference to `cv::fastMalloc(unsigned int)'
C:/OpenCV2.3.1/libs/armeabi-v7a/libopencv_highgui.a(grfmt_tiff.o): In function `cv::TiffDecoder::newDecoder() const':
grfmt_tiff.cpp:(.text._ZNK2cv11TiffDecoder10newDecoderEv+0x16): undefined reference to `cv::fastMalloc(unsigned int)'
C:/OpenCV2.3.1/libs/armeabi-v7a/libopencv_highgui.a(grfmt_tiff.o): In function `cv::TiffDecoder::~TiffDecoder()':
grfmt_tiff.cpp:(.text._ZN2cv11TiffDecoderD1Ev+0x48): undefined reference to `cv::fastFree(void*)'
grfmt_tiff.cpp:(.text._ZN2cv11TiffDecoderD1Ev+0x6e): undefined reference to `cv::Mat::deallocate()'
        .
        .
        .

Сначала я загружаю последнюю версию openCV и собираю ее, а затем использую библиотеки. также в

project.pro

добавить эти строки:

INCLUDEPATH += "C:\OpenCV2.3.1\include\opencv" 
LIBS +="C:/OpenCV2.3.1/libs/armeabi-v7a/libopencv_androidcamera.a" \
"C:/OpenCV2.3.1/libs/armeabi-v7a/libopencv_calib3d.a" \
"C:/OpenCV2.3.1/libs/armeabi-v7a/libopencv_calib3d_pch_dephelp.a" \ .
...

может понадобиться поддержка openCV? зачем показывать эти ошибки?

извините за мой английский.

Ответы [ 2 ]

1 голос
/ 02 апреля 2012

Оказывается, что порядок файлов .a имеет значение.Поместите их в следующем порядке (измените путь к вашим путям) у меня работает:

LIBS += \
    /media/Software/android/OpenCV-2.3.1/libs/armeabi-v7a/libopencv_calib3d.a \
    /media/Software/android/OpenCV-2.3.1/libs/armeabi-v7a/libopencv_flann.a \
    /media/Software/android/OpenCV-2.3.1/libs/armeabi-v7a/libopencv_objdetect.a \
    /media/Software/android/OpenCV-2.3.1/libs/armeabi-v7a/libopencv_contrib.a \
    /media/Software/android/OpenCV-2.3.1/libs/armeabi-v7a/libopencv_video.a \
    /media/Software/android/OpenCV-2.3.1/libs/armeabi-v7a/libopencv_ml.a \
    /media/Software/android/OpenCV-2.3.1/libs/armeabi-v7a/libopencv_legacy.a \
    /media/Software/android/OpenCV-2.3.1/libs/armeabi-v7a/libopencv_highgui.a \
    /media/Software/android/OpenCV-2.3.1/share/OpenCV/3rdparty/libs/armeabi-v7a/liblibjpeg.a \
    /media/Software/android/OpenCV-2.3.1/share/OpenCV/3rdparty/libs/armeabi-v7a/liblibpng.a \
    /media/Software/android/OpenCV-2.3.1/share/OpenCV/3rdparty/libs/armeabi-v7a/liblibtiff.a \
    /media/Software/android/OpenCV-2.3.1/share/OpenCV/3rdparty/libs/armeabi-v7a/liblibjasper.a \
    /media/Software/android/OpenCV-2.3.1/share/OpenCV/3rdparty/libs/armeabi-v7a/libzlib.a \
    /media/Software/android/OpenCV-2.3.1/libs/armeabi-v7a/libopencv_ts.a \
    /media/Software/android/OpenCV-2.3.1/libs/armeabi-v7a/libopencv_imgproc.a \
    /media/Software/android/OpenCV-2.3.1/libs/armeabi-v7a/libopencv_core.a \
    /media/Software/android/OpenCV-2.3.1/libs/armeabi-v7a/libopencv_androidcamera.a \
    /media/Software/android/OpenCV-2.3.1/libs/armeabi-v7a/libopencv_features2d.a

INCLUDEPATH += /media/Software/android/OpenCV-2.3.1/include/opencv/ \
               /media/Software/android/OpenCV-2.3.1/include/
0 голосов
/ 15 января 2012

найдите и добавьте libtiff.a, он может находиться в каталоге сторонних библиотек opencv.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...