在CentOS7上编译Opencv4Nodejs

编译FFmpeg

安装nasm:(gcc 4.8.5)

axel https://www.nasm.us/pub/nasm/releasebuilds/2.15.02/nasm-2.15.02.tar.gz
tar -zxvf nasm-2.15.02
cd nasm-2.15.02
./configure
make
sudo make install

安装H264:(gcc 4.8.5)

git clone https://github.com/cisco/openh264.git
cd openh264
git checkout -b v2.1.1
make ARCH=x86_64
sudo make install

安装x264: (gcc 4.8.5)

git clone https://code.videolan.org/videolan/x264.git
cd x264
./configure --enable-shared --enable-static --disable-asm  
make
sudo make install

从https://johnvansickle.com/ffmpeg/下载源码。

cd ffmpeg-4.3
vi fftools/Makefile
# 修改 $$(OBJS-$(1)): CFLAGS  += -fPIC $(CFLAGS-$(1))

用(gcc 4.8.5)编译:

./configure --enable-shared --enable-pic --enable-libopenh264 --enable-encoder=libopenh264 --enable-decoder=libopenh264 --enable-gpl --enable-libx264 --enable-encoder=libx264 --enable-decoder=h264
make
sudo make install
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig;/usr/local/lib64/pkgconfig;$PKG_CONFIG_PATH	
或者:
vi /etc/ld.so.conf.d/local.conf
# 加入:/usr/local/lib

编译OpenCV

用gcc 4.8.5编译:

cd opencv-4.3.0
vi CMakeLists.txt 

修改:

# add by sam
add_compile_options(-fPIC -Wl,-Bsymbolic)
# Or
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC -Wl,-Bsymbolic")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -Wl,-Bsymbolic")
mkdir build
cd build
cmake -D WITH_CUDA=OFF \
            -D CMAKE_BUILD_TYPE=Release \
			-D OPENCV_GENERATE_PKGCONFIG=ON \
            -D CMAKE_INSTALL_PREFIX=/usr/local \
            -D WITH_IPP=OFF \
            -D WITH_FFMPEG=ON  \
            -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.3.0/modules \
            -D BUILD_TESTS=OFF \
            -D BUILD_PERF_TESTS=OFF \
            -D INSTALL_PYTHON_EXAMPLES=OFF \
            -D INSTALL_C_EXAMPLES=OFF \
            -D BUILD_EXAMPLES=OFF \
			-S .. \
			-B ./ 
make -j4
sudo make install
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib:/usr/local/lib64

安装opencv4nodejs

安装node-gyp:

su root
npm install -g node-gyp

切换GCC到v7版本,GCC4会有编译错误:

sudo yum groupinstall 'Development Tools' 
sudo yum install centos-release-scl
sudo yum install devtoolset-7-gcc*
scl enable devtoolset-7 bash

修改package.json:

"opencv4nodejs": {
    "autoBuildFlags": "-DOPENCV_GENERATE_PKGCONFIG=ON -DOPENCV_PC_FILE_NAME=opencv4.pc",
    "autoBuildOpencvVersion": "4.3.0",
    "disableAutoBuild": 1,
    "opencvIncludeDir": "/usr/local/include/opencv4",
    "opencvLibDir": "/usr/local/lib64",
    "opencvBinDir": "/usr/local/bin"
  }

安装opencv-build,disableAutoBuild等于1是不要git下载opencv,用我们编译好的版本:

npm install opencv-build

安装opencv4nodejs

npm install opencv4nodejs

这个安装方式会更新opencv4nodejs,可以编译出opencv4nodejs.node,算是成功了。

实际上,最后仍然有个Error,可以如下处理:

vi node_modules/opencv4nodejs/binding.gyp

找到cflags,修改为:

 "cflags" : [
                        "-std=c++11","-Wno-misleading-indentation"
                ],

用npm install opencv4nodejs方式会覆盖修改,采用以下无更新安装方式:

cd node_modules/opencv4nodejs/
# Env
export OPENCV4NODEJS_DISABLE_AUTOBUILD=1
export OPENCV_INCLUDE_DIR=/usr/local/include/opencv4
export OPENCV_LIB_DIR=/usr/local/lib64
# 
node-gyp configure
# 
node install/install.js
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值