Centos opencv3.0 ffmpeg 的兼容性

从最新的 ffmpeg 上拉下来的最新代码(FFmpeg 2.7.2 "Nash") 和Opencv3.0 做兼容性,编译。

出现如下错误:

In file included from /home/share/opencv/opencv3/modules/videoio/src/cap_ffmpeg.cpp:45:
/home/share/opencv/opencv3/modules/videoio/src/cap_ffmpeg_impl.hpp: In member function ‘void CvCapture_FFMPEG::close()’:
/home/share/opencv/opencv3/modules/videoio/src/cap_ffmpeg_impl.hpp:317: error: ‘avcodec_free_frame’ was not declared in this scope
/home/share/opencv/opencv3/modules/videoio/src/cap_ffmpeg_impl.hpp: In member function ‘bool CvCapture_FFMPEG::open(const char*)’:
/home/share/opencv/opencv3/modules/videoio/src/cap_ffmpeg_impl.hpp:632: error: ‘avcodec_alloc_frame’ was not declared in this scope
/home/share/opencv/opencv3/modules/videoio/src/cap_ffmpeg_impl.hpp:635: error: ‘PIX_FMT_BGR24’ was not declared in this scope
/home/share/opencv/opencv3/modules/videoio/src/cap_ffmpeg_impl.hpp: In member function ‘bool CvCapture_FFMPEG::retrieveFrame(int, unsigned char**, int*, int*, int*, int*)’:


看了下代码, 在 FFmpeg 2.7.2 "Nash" 中已经取消了 avcodec_free_frame 这样的帧处理接口。

看来 ffmpeg的版本 还需要回归 FFmpeg 2.6.4 "Grothendieck".


编译到 26%, 出现 gcc 版本兼容问题。

[ 26%] Building CXX object modules/core/CMakeFiles/opencv_perf_core.dir/perf/perf_cvround.cpp.o
Linking CXX executable ../../bin/opencv_perf_core
../../lib/libopencv_core.so.3.0.0: undefined reference to `parallel_pthreads_set_threads_num(int)'
../../lib/libopencv_core.so.3.0.0: undefined reference to `parallel_pthreads_get_threads_num()'
../../lib/libopencv_core.so.3.0.0: undefined reference to `parallel_for_pthreads(cv::Range const&, cv::ParallelLoopBody const&, double)'


更改源码的函数声明方式:

namespace cv
    {
    ParallelLoopBody::~ParallelLoopBody() {}
    +#if defined HAVE_PTHREADS && HAVE_PTHREADS
    + void parallel_for_pthreads(const cv::Range& range, const cv::ParallelLoopBody& body, double nstripes);
    + size_t parallel_pthreads_get_threads_num();
    + void parallel_pthreads_set_threads_num(int num);
    +#endif
    }
   


#elif defined HAVE_PTHREADS
   - void parallel_for_pthreads(const Range& range, const ParallelLoopBody& body, double nstripes);
    +
    parallel_for_pthreads(range, body, nstripes);
   
    #else

#elif defined HAVE_PTHREADS
   
   - size_t parallel_pthreads_get_threads_num();
   -
    return parallel_pthreads_get_threads_num();
   
    #else
@@ -424,8 +428,6 @@ void cv::setNumThreads( int threads )
   
    #elif defined HAVE_PTHREADS
   
   - void parallel_pthreads_set_threads_num(int num);
   -
    parallel_pthreads_set_threads_num(threads);
   
    #endif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值