做网站分为几种广州海珠区网站建设
- 作者: 五速梦信息网
- 时间: 2026年04月18日 09:56
当前位置: 首页 > news >正文
做网站分为几种,广州海珠区网站建设,三水网站建设,化妆品的网站设计方案背景#xff1a; 由于手上有一块rk3568的开发板#xff0c;需要运行yolov5跑深度学习模型#xff0c;但是原有的opencv不能对x264格式的视频进行解码#xff0c;这里就需要将ffmpegx264编译进opencv。 但是开发板算力有限#xff0c;所以这里采用在windows下#xff0c;安…背景 由于手上有一块rk3568的开发板需要运行yolov5跑深度学习模型但是原有的opencv不能对x264格式的视频进行解码这里就需要将ffmpegx264编译进opencv。 但是开发板算力有限所以这里采用在windows下安装ubuntu的虚拟机在虚拟机上进行交叉编译得到arm 版的opencv。
pc主机windows10
虚拟机ubuntu-18.04
目标机: armv8
目标芯片rk3568
目标编译环境 aarch64-linux-gnu-gcc/aarch64-linux-gnu-g
注以下所有的环境安装都是在虚拟机上运行的目标ARM平台需要另外安装运行环境
目录
1、安装交叉编译器和编译工具
2、下载编译依赖的第三方软件
3、设定第三方软件统一的安装路径和编译安装软件
4、编译opencv
5、测试 1、安装交叉编译器和编译工具
sudo apt-get install g-aarch64-linux-gnu
sudo apt-get install gcc-aarch64-linux-gnu
sudo apt-get install cmake-gui cmake
sudo apt-get install build-essential
sudo apt-get install vim
sudo apt install pkg-config
2、下载编译依赖的第三方软件
zlib官网http://www.zlib.net/
libjpeg下载地址http://www.ijg.org/files/
libpng下载地址http://www.libpng.org/pub/png/libpng.html
yasm下载地址http://yasm.tortall.net/Download.html
x264下载地址http://www.videolan.org/developers/x264.html
libxvid下载地址http://ftp.br.debian.org/debian-multimedia/pool/main/x/xvidcore/
ffmpeg下载地址http://ffmpeg.org/download.html
这里将对应的软件下载下来就行软件版本的话我这边选的稍微稳定的版本
软件版本我这边的截图如下 3、设定第三方软件统一的安装路径和编译安装软件 为什么要设定安装路径一是方便管理当依赖的第三方软件都编译成功后可以统一将所有的lib库文件和include 头文件复制到目标文件夹 为什么要交叉编译安装软件因为我们要编译arm版本的opencv该opencv依赖的第三方软件也需要是arm版本的由于宿主主机是x86架构的所以只能交叉编译安装
注编译安装的命令行参数配置 –host: 指明目标平台 –prefix: 指明编译安装的位置 –enable-shared 生成动态库 –enable-static 生成静态库 声明软件的安装位置以及目标平台使用的 c 语言编译软件平台
vim ~/.bashrc
export OPENCV_DEPEND/usr/local/arm/opencv-depend
export OPENCV_INSTALL/usr/local/arm/opencv-install
export CCaarch64-linux-gnu-gcc
source ~/.bashrc 这里我将CCaarch64-linux-gnu这样的话后续采用configure编译得到的Makefile文件里面的CC都会由gcc改成aarch64-linux-gnu就不用每次都去Makefile文件里面去改相应的字段了 编译安装zlib
cd zlib-1.3.1/
./configure –prefix\(OPENCV_DEPEND --hostaarch64-linux-gnu
sudo maks sudo make install 编译安装libjpeg
cd jpeg-8
./configure --hostaarch64-linux-gnu --prefix\)OPENCV_DEPEND –enable-shared –enable-static
sudo make sudo make install 虽然指令写的没问题编译也没有问题但是我后面编译Opencv时却找不到 ljpeg 就算我指明了对应的库位置也不行所以这一步就当失败了。后面我会有解决方案解决这个问题那就是将 编译安装libpng
cd libpng-1.4.21/
./configure –hostaarch64-linux-gnu –prefix\(OPENCV_DEPEND --enable-shared --enable-static
sudo make sudo make install
编译安装x264
cd x264-master/
./configure --enable-shared --hostaarch64-linux-gnu --disable-asm --prefix\)OPENCV_DEPEND
sudo make sudo make install
x264 是一个很重要的依赖用于对 x264 编码格式的码流进行解码我们需要将x264编译进Opencv
编译libxvid
./configure –prefix\(OPENCV_DEPEND --hostarm-linux --disable-assembly
make
make install
编译ffmpeg
./configure --prefix\)OPENCV_DEPEND –enable-shared –disable-static –enable-gpl –enable-cross-compile –archarm –disable-stripping –target-oslinux –enable-libx264 –enable-libxvid –ccarm-linux-gcc –enable-swscale –extra-ldflags-L\(OPENCV_DEPEND/lib --extra-cflags-I\)OPENCV_DEPEND/include前面已经将一些依赖的第三方软件都安装完成现在需要将这些依赖包含的头文件include和库文件 lib都复制到aarch64-gcc的指定路径下方便编译opencv时能找到
sudo cp -r /usr/local/arm/\(OPENCV_DEPEND/include/ /usr/aarch64-linux-gnu/include/
sudo cp -r /usr/local/arm/\)OPENCV_DEPEND/lib/ /usr/aarch64-linux-gnu/lib
4、编译opencv
1、获取opencv源码我这里的源代码版本是opencv-3.4.5
mkdir mybudild
cd mybuild
vim toolchain.cmake将以下内容填进去
###########user defined#############
set( CMAKE_SYSTEM_NAME Linux )
set( CMAKE_SYSTEM_PROCESSOR arm )
set( CMAKE_C_COMPILER arm-none-linux-gnueabi-gcc )
set( CMAKE_CXX_COMPILER arm-none-linux-gnueabi-g )
###########user defined#############
set( CMAKE_FIND_ROOT_PATH /usr/local/arm/opencv-depend )
set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER )
set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
######################################在新建的mybuild文件夹下键入命令cmake-gui
我的路径是 /home/rock/src/opencv-3.4.5/mybuild2 cmake-gui通过Add Entry按钮添加OPENCV_ENABLE_PKG_CONFIG选择类型为bool并打钩
将以下内容填进去去掉 WITH_CUDA 去掉 WITH_GTK 去掉 WITH_1394 去掉 WITH_GSTREAMER 去掉 WITH_LIBV4L 去掉 WITH_TIFF 去掉 BUILD_OPENEXR 去掉 WITH_OPENEXR 去掉 BUILD_opencv_ocl 去掉 WITH_OPENCL
勾选BUILD_JPEG
这里增加勾选BUILD_JPEG刚好解决我前面编译ljpeg后CMAKE链接不到的问题 完成后 vim CMakeCache.txt
将该行改成
CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING-lpthread -lrt
sudo make make install
大功告成
5、测试 CMakeLists.txt内容为
cmake_minimum_required(VERSION 3.1)
project(opencv)
SET(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -stdc11)
include_directories(/home/rock/opencv_test/install/include)
link_directories(/home/rock/opencv_test/install/lib)
#add_executable(opencv opencv.cpp)
add_executable(opencv opencv.cpp)
target_link_libraries(opencv /home/rock/opencv_test/install/lib/libopencv_highgui.so.3.4.5/home/rock/opencv_test/install/lib/libopencv_video.so.3.4.5/home/rock/opencv_test/install/lib/libopencv_core.so.3.4.5/home/rock/opencv_test/install/lib/libopencv_videoio.so.3.4.5 /home/rock/opencv_test/install/lib/libopencv_imgproc.so.3.4.5 /home/rock/opencv_test/install/lib/libopencv_imgcodecs.so.3.4.5)其中opencv.cpp源代码内容为
#include iostream
#include opencv2/core/core.hpp
#include opencv2/imgcodecs.hpp
#include opencv2/imgproc.hpp
#include opencv2/highgui/highgui.hpp
#includebits/stdc.h
#includearpa/inet.h
#includesys/socket.h
#includeunistd.h
#includesys/types.h
int main()
{struct sockaddr_in server_addr;server_addr.sin_family AF_INET;server_addr.sin_port htons(9123); // 服务器端口inet_pton(AF_INET, 192.168.0.111, server_addr.sin_addr.s_addr);int sock_fd socket(AF_INET, SOCK_DGRAM, 0);if(sock_fd 0)perror();cv::VideoCapture capture; capture.open(limeng.mp4);cv::Size S cv::Size(capture.get(cv::CAP_PROP_FRAME_WIDTH),capture.get(cv::CAP_PROP_FRAME_HEIGHT));//cv::VideoWriter wri(./wri.mp4, capture.get(cv::CAP_PROP_FOURCC), 30,S, true);//cv::VideoWriter wri(./wri.mp4, cv::VideoWriter::fourcc(M, P, 4, V) , 30,S, true);cv::VideoWriter wri(./wri.mp4, cv::VideoWriter::fourcc(m, p, 4, v) , 30,S, true);if (!capture.isOpened()){std::cout failed to open the video std::endl;return -1;}cv::Mat image;//摄像头读取的图像后续会进行压缩 这里进行压缩相关配置std::vectorint quality;quality.push_back(CV_IMWRITE_JPEG_QUALITY);quality.push_back(30);//进行50%的压缩std::vectoruchar data_encode;int cnt 0 ;while(1){capture image ; if(image.cols 0 || image.rows 0) return -1;wri image;cnt ;if(cnt 1000) return -1;//printf(%d %d \n , image.cols , image.rows);//imencode(.jpg, image, data_encode, quality);//将图像编码//int nSize data_encode.size();//unsigned char *encodeImg new unsigned char[nSize];//for (int i 0; i nSize; i) { encodeImg[i] data_encode[i]; }将unsigned char * 指针变量转化为const char * 指针变量 方便进行sendto函数调用//const char* p (const char)(char)encodeImg;//sendto(sock_fd, p, nSize, 0, (struct sockaddr *) server_addr, sizeof(server_addr));
}return 0;
}编译结果为 运行结果来看经过交叉编译的Opencv是可以在目标arm平台上运行的
- 上一篇: 做网站费用上海百度seo算法
- 下一篇: 做网站服务器权限设置WordPress mx 主题
相关文章
-
做网站费用上海百度seo算法
做网站费用上海百度seo算法
- 技术栈
- 2026年04月18日
-
做网站费用会计分录怎么做网站开发专业实习报告
做网站费用会计分录怎么做网站开发专业实习报告
- 技术栈
- 2026年04月18日
-
做网站费用会计分录怎么做百度关键字
做网站费用会计分录怎么做百度关键字
- 技术栈
- 2026年04月18日
-
做网站服务器权限设置WordPress mx 主题
做网站服务器权限设置WordPress mx 主题
- 技术栈
- 2026年04月18日
-
做网站服务怎么赚钱微盟公司简介
做网站服务怎么赚钱微盟公司简介
- 技术栈
- 2026年04月18日
-
做网站付多少定金开发公司经营范围
做网站付多少定金开发公司经营范围
- 技术栈
- 2026年04月18日
