当前位置: 首页 > news >正文

php网站开发经典教材黄冈网站推广软件下载

php网站开发经典教材,黄冈网站推广软件下载,有什么关于网站建设实例的书,wordpress 首页添加登陆背景: 由于手上有一块rk3568的开发板,需要运行yolov5跑深度学习模型,但是原有的opencv不能对x264格式的视频进行解码,这里就需要将ffmpegx264编译进opencv。 但是开发板算力有限,所以这里采用在windows下,安…

背景:

       由于手上有一块rk3568的开发板,需要运行yolov5跑深度学习模型,但是原有的opencv不能对x264格式的视频进行解码,这里就需要将ffmpeg+x264编译进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 CC=aarch64-linux-gnu-gcc
source ~/.bashrc

  这里我将CC=aarch64-linux-gnu,这样的话,后续采用configure编译得到的Makefile文件里面的CC都会由gcc改成aarch64-linux-gnu,就不用每次都去Makefile文件里面去改相应的字段了 

    编译安装zlib

cd  zlib-1.3.1/
./configure --prefix=$OPENCV_DEPEND  --host=aarch64-linux-gnu
sudo maks && sudo make install

   编译安装libjpeg

cd jpeg-8
./configure --host=aarch64-linux-gnu --prefix=$OPENCV_DEPEND --enable-shared --enable-static
sudo make  && sudo make install 

 虽然指令写的没问题,编译也没有问题,但是我后面编译Opencv时,却找不到 ljpeg  , 就算我指明了对应的库位置,也不行,所以这一步就当失败了。后面我会有解决方案解决这个问题:那就是将

 编译安装libpng

cd libpng-1.4.21/
./configure --host=aarch64-linux-gnu --prefix=$OPENCV_DEPEND --enable-shared --enable-static
sudo make && sudo make install 

编译安装x264

cd x264-master/
./configure --enable-shared --host=aarch64-linux-gnu --disable-asm --prefix=$OPENCV_DEPEND
sudo  make && sudo make install 

x264 是一个很重要的依赖,用于对 x264 编码格式的码流进行解码,我们需要将x264编译进Opencv

编译libxvid

./configure --prefix=$OPENCV_DEPEND --host=arm-linux --disable-assembly
make
make install

编译ffmpeg

./configure --prefix=$OPENCV_DEPEND --enable-shared --disable-static --enable-gpl --enable-cross-compile --arch=arm --disable-stripping --target-os=linux --enable-libx264 --enable-libxvid --cc=arm-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} "-std=c++11")
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"
#include<bits/stdc++.h>
#include<arpa/inet.h>
#include<sys/socket.h>
#include<unistd.h>
#include<sys/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::vector<int> quality;quality.push_back(CV_IMWRITE_JPEG_QUALITY);quality.push_back(30);//进行50%的压缩std::vector<uchar> 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平台上运行的

http://www.yayakq.cn/news/865444/

相关文章:

  • 用什么可以做网站公众号官方平台
  • 破解WordPress站点大连港健康打卡二维码
  • 河南省建设监理协会新网站北京网站开发建设
  • qq互联网站备案号成都做seo网站公司
  • 免费制作头像的网站极酷wordpress
  • 瑞安商业网站建设中企动力做的电梯网站
  • 信诚网络公司网站如何入驻亚马逊跨境电商
  • 移动电子商务网站设计wordpress 微博组件
  • 315晚会 网站建设公司wordpress评论时选填
  • 网站建设与维护题库20个中国风网站设计欣赏
  • 免费制图网站旅游网站图片
  • 网站关键词密这么稀释关于asp.net的网站模板
  • 如东网站建设哪家好WordPress对接易支付
  • 快速搭建网站vue文学网站模板下载
  • 高度重视部门网站建设网站数据库地址是什么
  • 网站建设 归为会计哪一类wordpress开发小工具
  • 如何创作个人网站建材网站模板
  • 一般做公司网站需要哪几点网站建设运营计划
  • 沈阳网站开发招聘菜鸟教程自学网
  • php 网站开发案例教程计算机网站开发专业
  • 优秀网站开发商根据网站做软件
  • 可以看封禁网站的浏览器小型公司网络建设方案
  • 广州市网站建设中国企业信息
  • 做网站搜索结果的代码大气宏伟wordpress企业主题
  • 佛山木工机械厂骏域网站建设专家大数据营销
  • 太原网站制作哪儿好薇wordpress熊掌号展示
  • 浏览器网站建设的步骤过程吧网站做软件的软件下载
  • 太原网站制作价格青岛seo关键词优化公司
  • 官方网站找工作公众号wordpress大学主题1.3
  • 抚顺网站设计室内设计难学吗