点击打开链接

opencv中做h264编码向下调用ffmpeg,而ffmpeg中又调用libx264,于是这也就涉及到了libx264,ffmpeg和opencv三者之间的联合编译

如果没有rtsp流的抓取,直接安装opencv即可,注意make是增加-pthread 和-lc(libpthread libc)如果需要抓取rtsp

1、安装x.264 否则抓取失败,不支持x.264

1).安装依赖的包:

sudo apt-get update

sudo apt-get installbuild-essential Git-core checkinstall texi2html libfaac-dev  libopencore-amrnb-dev libopencore-amrwb-dev libsdl1.2-dev libtheora-dev libvorbis-dev libx11-devlibxfixes-dev zlib1g-dev

 

2).安装Yasm:x264需要使用yasm来针对CPU架构进行优化,提高性能。(不需要,我们是为了嵌入式,yasm仅针对x86 x64)

3).安装x264:下载源代码、编译、安装

x264下载:http://download.videolan.org/x264/snapshots/

cd x264

./configure --enable-static   //静态库

make

make install

4).此时 libx264.a默认安装在/usr/local/lib,直接编译会出现

2、安装ffmpeg 否则没有实现,抓取失败

https://www.ffmpeg.org/download.html

注意下载对应的版本,否则和opencv会不一致,用的是 1.2版本(原来下载最新版,头文件定义不一致)

./configure --disable-asm --disable-shared--enable-static

3、用cmake-gui编译opencv2.4.9

注意要 with ffmpeg  without 1394

linux下x264 ffmpeg opencv的联合编译linux下x264 ffmpeg opencv的联合编译linux下x264 ffmpeg opencv的联合编译linux下x264 ffmpeg opencv的联合编译

4.编译程序,修改makefile,主要是makefile里面库的路径,以及顺序。

CC=g++

 MAKE=make

CFLAGS= -Wall -D_REENTRANT-g -Wl,--no-export-dynamic

INCDIR=-I./include-I./include/lib -I/home/fyp/opencv-2.4.9/include

LIBDIR=-L/usr/local/lib-L/usr/local/share/OpenCV/3rdparty/lib -L/usr/lib/x86_64-linux-gnu-L/usr/lib/gcc/x86_64-linux-gnu/5 -L/usr/lib/x86_64-linux-gnu/oxide-qt

LIBFLAG=-Wl,-Bstatic-lopencv_highgui -lopencv_imgproc -lopencv_core -lopencv_world-Wl,--start-group -lzlib -llibjpeg -llibtiff -llibjasper -llibpng -lavformat -lavcodec -lavdevice -lavfilter -lavutil-lswscale -Wl,--end-group

LIBFLAG+=-Wl,-Bdynamic-Wl,--start-group -pthread -lrt -lc -Wl,--end-group

OBJECTS=TestDetectWaterDepthDLL.o

COMMHEAD=./include/DWDDefine.h./include/GetConfig.h ./include/WinToLinux.h

TARGET=DetectWaterDepth

ARR=/home/fyp/opencv-2.4.9/release/lib/libopencv_highgui.a /home/fyp/opencv2.4.9/release/lib/libopencv_imgproc.a  /home/fyp/opencv2.4.9/release/lib/libopencv_core.a /usr/local/share/OpenCV/3rdparty/lib/liblibjpeg.a /usr/local/share/OpenCV/3rdparty/lib/liblibtiff.a /home/fyp/opencv-2.4.9/release/3rdparty/lib/liblibjasper.a /usr/local/share/OpenCV/3rdparty/lib/liblibpng.a /usr/local/ffmpeg/lib/libswscale.a /usr/local/ffmpeg/lib/libavformat.a/usr/local/ffmpeg/lib/libavfilter.a /usr/local/ffmpeg/lib/libavdevice.a/usr/local/ffmpeg/lib/libavcodec.a /usr/local/ffmpeg/lib/libavutil.a/home/fyp/x264/libx264.a /usr/local/share/OpenCV/3rdparty/lib/libzlib.a

all :$(TARGET) $(OBJECTS)

 DetectWaterDepth : $(OBJECTS) $(COMMHEAD) $(CC) $(CFLAGS)$(INCDIR) $(LIBDIR) $(LIBFLAG) -o [email protected] $(OBJECTS) $(ARR)

 TestDetectWaterDepthDLL.o : TestDetectWaterDepthDLL.cpp$(COMMHEAD)$(CC) $(CFLAGS) -c$(INCDIR) $(LIBDIR) $<

.PHONY: clean

clean:

      -rm -f *.o $(TARGET)

 

相关文章:

  • 2022-12-23
  • 2021-10-20
  • 2022-12-23
  • 2022-03-09
  • 2021-07-03
  • 2021-06-20
  • 2022-12-23
  • 2021-07-04
猜你喜欢
  • 2021-11-14
  • 2022-12-23
  • 2021-07-03
  • 2022-12-23
  • 2022-12-23
  • 2021-10-04
相关资源
相似解决方案