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

网站建设客户资料收集清单个人微信小店怎么开通

网站建设客户资料收集清单,个人微信小店怎么开通,磁县网络推广,阿里巴巴国际站跨境电商平台最近要完成一个功能,就是把四个视频合成左右上下分布的一个视频。尝试很多方法,最终使用opencv来实现该功能。(通过opencv实现的视频好像没有声音。)研究的步骤,首先在Ubuntu环境测试,该功能是否实现。然后再将生成的库文件放到AS中,使用jni的方法调用,或者将源码放到A…

最近要完成一个功能,就是把四个视频合成左右上下分布的一个视频。尝试很多方法,最终使用opencv来实现该功能。(通过opencv实现的视频好像没有声音。)研究的步骤,首先在Ubuntu环境测试,该功能是否实现。然后再将生成的库文件放到AS中,使用jni的方法调用,或者将源码放到AS中利用jni技术。在实现过程中遇到很多问题,下面记录。
一、在ubuntu linux环境使用opencv。
1、下载opencv安装包。
下载地址:官网:https://opencv.org/releases/

在这里插入图片描述

git地址:https://github.com/opencv/opencv/releases
在这里插入图片描述
2、将下载的安装包放到虚拟机根目录(新建software目录)。
在这里插入图片描述

3、安装包解压缩。

  unzip opencv-4.8.0.zip 

4、下载相关软件。
进入 opencv-4.8.0 文件夹。
1)更新软件

sudo apt-get update

在这里插入图片描述
2)安装cmake

sudo apt-get install cmake

在这里插入图片描述
3) 安装依赖库

sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff5.dev libswscale-dev libjasper-dev

在这里插入图片描述
4)在 opencv-4.8.0 文件夹下新建build文件夹。

 mkdir build

在这里插入图片描述

5)进入build文件夹,使用命令修改参数

 sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..

在这里插入图片描述

6)使用make编译

sudo make

在这里插入图片描述
在这里插入图片描述

7)安装

sudo make install

在这里插入图片描述
8)配置环境

sudo gedit /etc/ld.so.conf.d/opencv.conf 

在新建的文档中添加:

/usr/local/lib
sudo ldconfig

配置路径生效。
在这里插入图片描述
在这里插入图片描述
9)配置bash

sudo gedit /etc/bash.bashrc 

在最末尾添加

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig  
export PKG_CONFIG_PATH 

执行该步骤时,发现/usr/local/lib/路径下没有pkgconfig文件夹。并且执行命令

pkg-config --cflags openc

报一下错误。
在这里插入图片描述
解决:首先创建opencv.pc文件,这里要注意它的路径信息:

cd /usr/local/lib
sudo mkdir pkgconfig
cd pkgconfig
sudo touch opencv.pc

然后在opencv.pc中添加以下信息,注意这些信息需要与自己安装opencv时的库路径对应:(一下是我自己的内容)


prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include/opencv4Name: OpenCV
Description: Open Source Computer Vision Library
Version: 4.8.0
Libs: -L${exec_prefix}/lib -lopencv_highgui -lopencv_shape -lopencv_objdetect -lopencv_ml -lopencv_superres -lopencv_dnn -lopencv_stitching -lopencv_videostab -lopencv_calib3d -lopencv_videoio -lopencv_imgcodecs -lopencv_features2d -lopencv_video -lopencv_photo -lopencv_imgproc -lopencv_flann -lopencv_core
Libs.private: -ldl -lm -lpthread -lrt
Cflags: -I${includedir}

保存退出,添加环境:

export  PKG_CONFIG_PATH=/usr/local/lib/pkgconfig

执行.cpp编译命令:

 g++ videotest.cpp -o videotest `pkg-config --cflags --libs opencv`

报错:
在这里插入图片描述
再执行编译命令:

g++ videotest.cpp -o videotest `pkg-config --cflags --libs opencv` -std=gnu++11

报错:
在这里插入图片描述
查看/usr/local/lib/lib文件下没有libopencv_shape.so等这三个库,再次打开/usr/local/lib/pkgconfig/opencv.pc文件,将-lopencv_shape 等三个路径删除掉。保存退出。执行命令:

g++ videotest.cpp -o videotest `pkg-config --cflags --libs opencv` -std=gnu++11

编译成功。
在这里插入图片描述
最后的opencv.pc文件:

# Package Information for pkg-configprefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include/opencv4Name: OpenCV
Description: Open Source Computer Vision Library
Version: 4.8.0
Libs: -L${exec_prefix}/lib -lopencv_highgui -lopencv_objdetect -lopencv_ml -lopencv_dnn -lopencv_stitching -lopencv_calib3d -lopencv_videoio -lopencv_imgcodecs -lopencv_features2d -lopencv_video -lopencv_photo -lopencv_imgproc -lopencv_flann -lopencv_core
Libs.private: -ldl -lm -lpthread -lrt
Cflags: -I${includedir}

注意:1、该opencv源码编译的对应so库文件只是linux系统平台文件(我的是x86_64),如果想将该库编译为其他平台,例如arm64需要交叉编译。(我没整明白)
注意:2、上述配置bash后,使用以下命令使得配置文件生效。若没有生效,重启电脑试试。(如果没有生效,执行 编译生成的可执行文件,报错 找不到opencv库)

source /etc/bash.bashrc  
sudo updatedb

注意:3 我这里编译的是opencv4.8.0版本,编译过程中使用python3.x版本,opencv.pc需要自己创建。链接http://www.taodudu.cc/news/show-3639538.html?action=onClick#google_vignette 编译的opencv3.4.1版本,使用python2.x版本,opencv.pc自动生成。按照链接中配置,就可以成功编译安装opencv。

最后是测试代码,功能将代码中的video.mp4合成上下左右分布的一个视频。生成视频为mergevideo.avi 或mergevideo.mkv

#include <iostream>
#include <opencv2/opencv.hpp>
#include <unistd.h>
#include <error.h>
#include <errno.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <pthread.h>
#include <linux/videodev2.h>
#include <sys/mman.h>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>
#include <iomanip>
#include <string>using namespace std;
using namespace cv;
int main(int argc, char ** argv)
{std::string videoFile = "video.mp4";//视频的路径std::string videoFile1 = "video.mp4";//视频的路径std::string videoFile2 = "video.mp4";//视频的路径std::string videoFile3 = "video.mp4";//视频的路径/** 打开第一个视频文件 */VideoCapture cap; //视频句柄变量cap.open(videoFile);//打开视频if(!cap.isOpened())  //判断是否打开了{  printf("1cap.isOpened is error\n");return -1;  } /** 打开第二个视频文件 */VideoCapture cap1; //视频句柄变量cap1.open(videoFile1);//打开视频if(!cap1.isOpened())  //判断是否打开了{  printf("2cap.isOpened is error\n");return -1;  } /** 打开第三个视频文件 */VideoCapture cap2; //视频句柄变量cap2.open(videoFile2);//打开视频if(!cap2.isOpened())  //判断是否打开了{  printf("3cap.isOpened is error\n");return -1;  } /** 打开第四个视频文件 */VideoCapture cap3; //视频句柄变量cap3.open(videoFile3);//打开视频if(!cap3.isOpened())  //判断是否打开了{  printf("4cap.isOpened is error\n");return -1;  } /** 打开第一个视频文件的帧数 */int frame_num = cap.get(cv::CAP_PROP_FRAME_COUNT);std::cout << "videoFile total frame number is: " << frame_num << std::endl;/** 打开第二个视频文件的帧数 */int frame_num1 = cap1.get(cv::CAP_PROP_FRAME_COUNT);std::cout << "videoFile1 total frame number is: " << frame_num1 << std::endl;/** 打开第三个视频文件的帧数 */int frame_num2 = cap2.get(cv::CAP_PROP_FRAME_COUNT);std::cout << "videoFile2 total frame number is: " << frame_num2 << std::endl;/** 打开第四个视频文件的帧数 */int frame_num3 = cap3.get(cv::CAP_PROP_FRAME_COUNT);std::cout << "videoFile3 total frame number is: " << frame_num3 << std::endl;/** 打开第一个视频文件的帧率 */int fps = cap.get(cv::CAP_PROP_FPS);std::cout << "videoFile fps: " << fps << std::endl;/** 打开第二个视频文件的帧率 */int fps1 = cap1.get(cv::CAP_PROP_FPS);std::cout << "videoFile1 fps1: " << fps1 << std::endl;/** 打开第三个视频文件的帧率 */int fps2 = cap2.get(cv::CAP_PROP_FPS);std::cout << "videoFile fps2: " << fps2 << std::endl;/** 打开第四个视频文件的帧率 */int fps3 = cap3.get(cv::CAP_PROP_FPS);std::cout << "videoFile1 fps3: " << fps3 << std::endl;/** 打开第一个视频文件的宽度 */int image_width = cap.get(cv::CAP_PROP_FRAME_WIDTH);std::cout << "videoFile image width is: " << image_width << std::endl;/** 打开第二个视频文件的宽度 */int image_width1 = cap1.get(cv::CAP_PROP_FRAME_WIDTH);std::cout << "videoFile1 image width is: " << image_width1 << std::endl;/** 打开第三个视频文件的宽度 */int image_width2 = cap2.get(cv::CAP_PROP_FRAME_WIDTH);std::cout << "videoFile2 image width is: " << image_width2 << std::endl;/** 打开第四个视频文件的宽度 */int image_width3 = cap3.get(cv::CAP_PROP_FRAME_WIDTH);std::cout << "videoFile3 image width is: " << image_width3 << std::endl;/** 打开第一个视频文件的高度 */int image_height = cap.get(cv::CAP_PROP_FRAME_HEIGHT);std::cout << "videoFile image height: " << image_height << std::endl;/** 打开第二个视频文件的高度 */int image_height1 = cap1.get(cv::CAP_PROP_FRAME_HEIGHT);std::cout << "videoFile1 image height: " << image_height1 << std::endl;/** 打开第三个视频文件的高度 */int image_height2 = cap2.get(cv::CAP_PROP_FRAME_HEIGHT);std::cout << "videoFile2 image height: " << image_height2 << std::endl;/** 打开第四个视频文件的高度 */int image_height3 = cap3.get(cv::CAP_PROP_FRAME_HEIGHT);std::cout << "videoFile3 image height: " << image_height3 << std::endl;/** 打开第一个视频文件的矩阵对象的格式*/int frame_format = cap.get(cv::CAP_PROP_FORMAT);std::cout << "videoFile frame format: " << frame_format << std::endl;/** 打开第二个视频文件的矩阵对象的格式 */int frame_format1 = cap1.get(cv::CAP_PROP_FORMAT);std::cout << "videoFile1 frame format: " &
http://www.yayakq.cn/news/857109/

相关文章:

  • 湘潭网站建设 就问磐石网络专业公众号注册平台
  • 基于c 的网站开发电子商务网站建设的安全性
  • 教育局网站群建设方案长春专业网站推广
  • 上虞区住房和城乡建设局网站网站建设首期款
  • 海北高端网站建设中国企业500强最新排名名单
  • 网站上传的图片怎么做的清晰度河南两学一做网站
  • 申请付费网站建设项目环境影响评价登记表网站
  • 建设银行网站怎么登陆密码成都品牌设计公司
  • cc0图片素材网站保健品做哪个网站好
  • 手机网站自适应屏幕wordpress5分钟安装
  • 用网站做邮箱吗成都网站建设开发价格
  • 湛江网站制作网站哪里有网站开发定制
  • 免费空间领取网站大连市城市建设档案馆网站
  • 免费网站服务器租用海口制作手机网站
  • 网站搜索下拉是怎么做的php做网站的好处
  • html5 网站 优势wordpress引导页插件
  • 网络营销的网站建设全国企业信息系统查询系统
  • 如何发布自己的网站怎样在百度上发布信息
  • 公司网站建设的现状网站建设代码实例
  • 装饰网站的业务员都是怎么做的陕西服装网站建设
  • 亚马逊商标备案是否必须做网站网站被降权
  • 南溪区网站建设苏州网站建设制作设计
  • 湖南建设网站海外网络服务器
  • 合肥网站建设政务区免费手机app制作软件
  • 云谷 网站建设昆明网站建设排名
  • 专业做网站建设公司哪家好网站模块有哪些
  • 个性个人网站中山网站seo关键词
  • 企业网站的高跳出率应该如何解决一流的五屏网站建设
  • 大型门户网站建设费用教育加盟培训网站建设
  • 南宁老牌网站建设公司群晖下搭建wordpress